SSH免密登录的步骤:
准备工作:
准备2台机器,
192.168.78.131充当PC端,
充当Server端。
首先询问是否记住陌生的IP。
然后他会问【要登录端】的密码。
此时问的是yinlei这个用户的密码而不是root的密码.【ssh不指定用户名的情况下会以当前linux登录的用户作为登录别的机器的用户名】
原因是当前机器的用户是yinlei,所以会问我yinlei的密码。
切换另一个用户:
su 用户名
增加一个用户:
adduser 用户名
1.生成公私钥:
key存储的位置是当前用户的.ssh下的id_rsa文件(rsa是加密方式)
- id_rsa是私钥文件
- id_rsa.pub是公钥文件
- known_hosts是已知的配置过的都会记录在这里。
2.将生成的公钥上传到我们需要登录的server的
用户/.ssh/authorized-keys
查看一下公钥:
将内容复制,
然后到需要登录的机器上,
没有.ssh目录就mkdir .ssh进行创建
然后将上面复制的内容写入到authorized_keys中:
再查看一下该文件,第一次配置是只有1行,这里我有2行是因为以前配置过。
3.ssh登录(此时不需要输入密码)
在192.168.78.131PC端进行登录:
这里出现了权限否决[需要允许root远程登录]:先进入被链接主机,然后:
出现问题的原因:服务端SSH 服务配置了禁止root用户登录策略。
取消掉注释:
但是这里尝试了几次,发现在PC端非root身份登录还是会报上述错误,
此问题遗留求各位大神解答。
而这里我还是选择使用了root身份:
这里需要注意的是要登录的远程端(我这里是阿里云)的ssh是默认不允许非root连接,所以在PC端可以换成root身份再ssh就不会出现上面的错误。
下次ssh就可以不用输入密码了。
ssh还可以指定用户名登录:,比如以root身份进行登录
生成的id_rsa私钥会在这次ssh请求的时候被携带传到要登录的端。如果该私钥文件不在默认位置下,可以指定自定义该私钥的位置,通过 -i 指定其他路径。