1.生成公钥
在命令行运行以下命令
ssh-keygen
根据提示生成RSA公钥和私钥,默认会将生成的文件存放到.ssh/
目录下,文件名分别为:
id_rsa.pub
id_rsa
之后,运行命令
cat id_rsa.pub >> authorized_keys
chmod 600 .ssh/*
将公钥中的内容追加到authorized_keys文件
2.修改ssh配置文件
修改/etc/ssh/sshd_config
配置文件
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启ssh服务:service sshd restart
之后就可以尝试在security crt中使用公钥进行免密登录了。 如果能使用公钥进行免密登录了,就可以修改/etc/ssh/sshd_config配置文件中的如下配置了:
PasswordAuthentication no
一定要先验证完了在修改该配置,否则的话就没办法登录了。
3.客户端登陆
windows可以先安装git bash,然后可以使用和linux环境一样的命令远程登陆linux机器:
ssh -i rsa私钥文件路径 登录名@ip地址
当然windows还可以使用security crt登陆。
需要注意的是服务端.ssh文件夹在哪个用户目录下,这里的登录名就要用哪个。
4.公钥登陆的原理解析
- Client将自己的公钥存放在Server上,追加在文件authorized_keys中。
- Server端接收到Client的连接请求后,会在authorized_keys中匹配到Client的公钥pubKey,并生成随机数R,用Client的公钥对该随机数进行加密得到pubKey(R) ,然后将加密后信息发送给Client。
- Client端通过私钥进行解密得到随机数R,然后对随机数R和本次会话的SessionKey利用MD5生成摘要Digest1,发送给Server端。
- Server端会也会对R和SessionKey利用同样摘要算法生成Digest2。
- Server端会最后比较Digest1和Digest2是否相同,完成认证过程。
转自 https://www.cnblogs.com/betterquan/p/12397751.html
5.腾讯云个坑货以上方法不管用
腾讯云上述方法就算都做了也不会管用,一定要登录腾讯云网页端控制台手动停机绑定ssh密钥,否则无论如何也不会生效的。
6.root用户登录的坑
root用户使用这种方法一定要注意要在/etc/ssh/sshd_config文件中允许root用户控制台登录,否则会登录失败。
7.报错:It is required that your private key files are NOT accessible by others
参考文章:https://blog.csdn.net/ibliplus/article/details/102405792
权限0644对于文件~/.ssh/id_rsa太开放了。
chmod 700 .ssh
chmod 600 .ssh/*
8.报错:Host key verification failed.
参考文章:https://blog.csdn.net/wd2014610/article/details/85639741
解决方法:
ssh-keygen -R 你要访问的IP地址
9.根据名字快速ssh
修改/etc/ssh/ssh_config
文件,添加以下内容
Host centos2
HostName 10.182.71.112
Port 22
User root
注意:本文归作者所有,未经作者允许,不得转载