ssh登录及免密配置

ssh登录

     SSH是一种网络协议,用于计算机之间的加密登录。SSH主要用于远程登录。假定你要以用户名user,登录远程主机host,只要一条简单命令就可以了。SSH之所以能够保证安全,原因在于它采用了公钥加密。当远程主机的公钥被本地接受以后,它就会被保存在本地文件$HOME/.ssh/known_hosts之中。下次再连接这台主机,系统就会认出它的公钥已经保存在本地了,从而跳过警告部分,直接提示输入密码。

     ssh密码登录: 整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户。(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。

     每个SSH用户都有自己的known_hosts文件,此外系统也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保存一些对所有用户都可信赖的远程主机的公钥。

     ssh公钥登录:使用密码登录,每次都必须输入密码,非常麻烦。好在SSH还提供了公钥登录,可以省去输入密码的步骤。所谓"公钥登录",原理很简单,就是用户将自己的公钥储存在远程主机上~/.ssh/authorized_keys文件。登录的时候,远程主机会向用户发送一段随机字符串,用户用自己的私钥加密后,再发回来。远程主机用事先储存的公钥(~/.ssh/authorized_keys文件)进行解密,如果成功,就证明用户是可信的,直接允许登录shell,不再要求密码。这种方法要求用户必须提供自己的公钥。如果没有现成的,可以直接用ssh-keygen生成一个:$ ssh-keygen

     公钥免密登陆的操作过程
1、登录A机器
2、ssh-keygen -t [rsa|dsa],将会生成私钥和公钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、从A机器登录B机器的目标账户,不再需要密码了。
5、设置文件和目录权限:要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。
   设置authorized_keys权限
   $ chmod 600 authorized_keys
   设置.ssh目录权限
   $ chmod 700 -R .ssh

5、要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。

     known_hosts:位置在 ~/.ssh/known_hosts中, 记录链接到对方主机时对方给的公钥。每次链接都会检查目前对方给的公钥与你记录的host key是否相同,进行简单的验证。ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

     如果对方重装了服务器时,需要先进入自己电脑的~/.ssh/known_hosts 删除原有的服务器的公钥。把其他正确的公钥信息也删除,下次链接要全部重新经过认证。(本地vscode远程到devcloud,而devcloud系统重装后需要删除本地的known_hosts ,否则远程ssh失败)
known_hosts文件内容:(host)服务器ip:(key)公钥
    [91.134.12.3]:36000 esdsa-sha2-nis-------


vscode免密登录Devcloud:

1、本机cmd下生成密钥:{window下git.exe所在的安装目录} > ssh-keygen -t rsa
2、上传id_rsa.pub(文件应该在C:\Users\用户名.ssh下)到devcloud
3、把id_rsa.pub复制到devcloud的/root/.ssh下,执行cat id_rsa.pub >> authorized_keys
4、chmod 600 authorized_keys、chmod 700 ~/.ssh
5、确认/etc/ssh/sshd_config的配置RSAAuthentication yes、PubkeyAuthentication yes
6、重启service sshd restart


git(ssh/http)免密push pull

  • https免密
    1、$ touch ~/.git-credentials
    2、$ vim ~/.git-credentials
    添加内容
    https://{username}:{passwd}@github.com
    3、 添加git配置
    $ git config --global credential.helper store
    4、 查看~/.gitconfig文件变化
    [credential]
    helper = store

  • ssh免密
    把本机的公钥上传到git仓库的ssh key中。

发布了75 篇原创文章 · 获赞 6 · 访问量 2747

猜你喜欢

转载自blog.csdn.net/u014618114/article/details/104450396