在工作的时候需要经常连接各个远程服务器,正常情况下每次连接远端服务器时都需要输入登陆账户的密码,每次输入都比较麻烦,希望走一个免登陆的效果。
1、生成公私钥
ssh-keygen -t rsa -C "xxx@xxx.com"
如果本地.ssh文件夹下已近有存在了公私钥,那可以跳过该步骤
2、公钥上传到目标服务器中
假设当前在.ssh目录下,执行下列代码
scp id_rsa_xx.pub root@remoteip:/root/.ssh/authorized_keys
这里还需要输入一次远端服务器的登陆密码
在远端服务器的.ssh文件夹下就有了authorized_keys 文件。
注意此处的文件名不可随意命名,可以 authorized_keys2,authorized_keys3的方式但如果命名为hello,就不work了。
3、修改本地config文件
到这里基本即将大功告成,需要在本地.ssh文件加下,添加一下访问目标ip的时候需要使用那一个私钥与之配对,因为如果本地有配置多个公私钥的话,默认是去id_rsa的私钥去配对,如果上传的是id_rsa_xx的话,那就会失败,因此需要告诉电脑,当连接目标地址的时候,需要使用本地那一对私钥与之配对。
修改.ssh/cnfig配置文件
模式大概如下:
# host可以是域名也可以是ip地址
Host gitlab.yjian.site
# hostname没有也可不添加
HostName gitlab.yjian.site
PreferredAuthentications publickey
#指定访问上面配置的host的时候,使用本地那一对私钥与之配对
IdentityFile ~/.ssh/id_rsa_yjian
上面几步配置完之后,就可以直接免密登陆远程服务器了