SSH登录开启免口令登录
目录
现在登服务器连密码都不用了,真是安全~
Q: 为什么使用公钥认证?
A: ssh登录密码可以被暴力破解,公钥认证比密码认证安全
如何开启公钥认证?
一、生成密钥对
公钥认证需要生成一对密钥对,这个过程可以通过openssh里自带工具完成。 生成密钥对的过程如下:
1.建立ssh工作目录(如果原来没有)
mkdir ~/.ssh
2.设置一下权限
chmod 700 ~/.ssh
3.生成rsa密钥对(加选项4096位使其加密程度更高,难以破解)
ssh-keygen -t rsa -b 4096
程序会询问你将生成的文件保存在哪里,回车用默认路径即可 建议设置复杂的私钥密码,以防私钥泄漏后别人可以自由登录你的服务器(但是要记得私钥密码,记得私钥密码,记得私钥密码)
二、复制公钥到服务器
在ssh公钥认证中,公钥需要保存在欲登录服务器上,私钥保存在本地计算机上用于和公钥配对。将公钥拷贝到服务器有两种方法
1.自动(服务器还可以密码登录的)
ssh-copy-id <username>@<host> -p <port>
2.手动
手动将公钥文件(默认保存在~/.ssh/id_rsa.pub)的内容添加到/服务器上要登录用户家目录/ssh/authorized_keys
具体方法:
①服务器若无.ssh目录请参照上文方法创建它,并修改权限。
②用scp将文件复制到服务器上:
scp ~/.ssh/id_rsa.pub <user>@<host>:/home/.ssh/authorized_keys
③更改权限:在服务器上执行
chmod 600 ~/.ssh/authorized_keys
如果服务器本来就是非口令认证的,你又不能登录(比如:忘记了私钥密码),可以考虑使用服务器提供商的管理面板,通过管理面板的root shell配置新公钥
三、开启ssh公钥认证
1.编辑/etc/ssh/sshd_config 找到如下行,将其配置为yes
PubkeyAuthentication yes
RSAAuthentication yes
2.重启ssh服务器:
sudo /etc/init.d/ssh restart
- 当此时尝试使用ssh登录服务器时,不会再询问ssh口令
- 而是询问私钥密码,私钥密码不是每次都要输入的,它会记住一段时间
- 要牢记私钥密码
四、关闭口令认证以提高安全性(可选)
既然启用了公钥认证,那么关闭密码认证很有必要
建议禁用密码验证,除非您有特定的原因。
要禁用密码验证,请在/etc/ssh/sshd_config文件中查找以下行:
#PasswordAuthentication yes
将其替换成如下所示的行:
PasswordAuthentication no
如果在配置的过程中遇到错误,可以参考以下网页: https://help.ubuntu.com/community/SSH/OpenSSH/Keys