使用密钥文件登录ssh
我们都知道ssh登录可以使用输入密码的方式,也可以通过密钥文件的形式。一般来说密钥文件能提供更好的安全性,防止攻击者暴力破解密码,而且在一些特殊的场合,比如管理
Jenkins slave,登录私有的git服务器,都需要这种密钥文件的认证方式来避免手动输入密码。
目前本博客的服务器用的是Vultr的VPS,直接面对互联网上各种流量,为了避免可能的入侵,最好还是将登录方式设为密钥。
生成密钥文件
Linux命令生成
生成密钥文件有多种途径,在各种教程中最常见的方法是登录到本地的某个Linux系统,输入 ssh-genkey命令生成密钥文件。系统会提示保存文件的路径,以及密码 passphrase
1 2 3 4 |
[crayon-6007a405df559326586272 inline="true" ]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ganhai/.ssh/id_rsa): Enter passphrase (empty for no passphrase): |
[/crayon]
默认路径会存在.ssh下面。既然都使用密钥文件认证了,密码可以为空。这样我们会拿到两个文件:
– id_rsa.pub: 公钥文件
– id_rsa: 私钥文件
使用Xshell软件生成
公司为我们提供了正版的XShell 5软件,用它来登录管理多台Linux主机不知道有多爽。这个强大的工具自然也提供了生成ssh密钥的功能。
1. 从主界面菜单
Tools > New User Key Wizard...,打开这个界面,使用默认的密钥长度2048,点击
Next
2. 这个界面表明生成密钥完成,点击
Next
3. 这里让我们输入口令,还是直接点击
Next,使用空口令
4. 这一步表明密钥生成完毕,文本框显示的是公钥,可以把内容拷贝出来保存,也可以点击
Save as a file保存到文件。
这里我们选
Save as a file,然后点击
Finish
5. 这样就到User Key的对话框,图中已经将刚才生成好的私钥id_rsa_2048加入到私钥管理器中。类似的也可以点击
Export将私钥文件保存出来备用。建议公钥私钥都另做备份。
上传公钥文件到远程Linux服务器
通过密码方式登录到目标服务器,我们要将这台服务器的某个账户设置成为使用密钥登录。假如要使用密钥登录这台服务器的newuser账户。
切换到这个账户
1 |
[crayon-6007a405df573663099969 inline="true" ]su - newuser |
[/crayon]
进入账户home下的.ssh目录,假如这个目录不存在则创建这个目录,并且修改访问权限为700,禁止其他账户和组访问
1 2 3 |
[crayon-6007a405df577867520995 inline="true" ]mkdir ~/.ssh chmod 700 ~/.ssh cd ~/.ssh |
[/crayon]
创建一个新文件authorized_keys,在里面写入刚才生成的公钥文件的内容
1 |
[crayon-6007a405df57c509708675 inline="true" ]echo ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAqe7UnlDSq459nzRWcGFEzEpTCn9B1GCzc9FIDnWAoywWHn90GeT2z1WTSCATwk7++r6knnUXcGaoNA9Y6OECAVF7ONjAT9PiActFiTU6mhTRxSJi7FjHoa93l9hzG7YA+mwDzMQCVjP1j91jXFZB+1tWu+WUEJaioOn9oEaRlgDCqowwvmizcvu4kpYFMxHjSrJpIu1+bOKBYNZKOrG6V2mrSF8pWG9qST9MA9DUd8Y2gMoZc3Ve/CF > authorized_keys |
[/crayon]
注意:将authorized_keys文件的权限设置成为600,否则ssh服务端禁止这个key的登录。
1 |
[crayon-6007a405df581217187355 inline="true" ]chmod 600 authorized_keys |
[/crayon]
使用私钥文件登录
在Xshell里,设置主机登录方式为Public Key,设置登录用户名为前面选择的newuser,私钥选择为前面生成的id_rsa_2048。
主机配置完成后,就可以一键登录进去了。
加入通过其他Linux机器
ssh命令行方式登录目标服务器,则可以使用下面的命令
1 |
[crayon-6007a405df588220403132 inline="true" ]ssh -i id_rsa_2048 newuser@server_ip |
[/crayon]
注意:id_rsa_2048必须设置成为600权限,否者登录失败
如果不想每次指定私钥文件,则必须将私钥文件放进放进~/.ssh,重命名为id_rsa
1 2 |
[crayon-6007a405df58d391654664 inline="true" ]mv id_rsa_2048 ~/.ssh/id_rsa ssh newuser@server_ip |
[/crayon]
提高ssh连接安全性
为了进一步提高安全性,我们可以禁用root账户ssh登录,强制使用密钥登录,并且修改ssh端口号,用root账号编辑 /etc/ssh/sshd_config文件,将下面这几行改为
1 2 3 |
[crayon-6007a405df594110149996 inline="true" ]PasswordAuthentication no PermitRootLogin no Port 22222 # new ssh port |
[/crayon]
如果开启了防火墙,记得打开新的ssh端口。
– firewalld防火墙
1 |
[crayon-6007a405df598767594563 inline="true" ]firewall-cmd --permanent -zone=public --add-port=22222/tcp |
[/crayon]
- iptables防火墙
1 |
[crayon-6007a405df59d736404558 inline="true" ]iptables -A INPUT -p tcp --dport 22222 -j ACCEPT |
[/crayon]
记得重启ssh服务让这些改动生效
1 |
[crayon-6007a405df5a4958109601 inline="true" ]service sshd restart |
[/crayon]
本文出自扉启博客,转载时请注明出处及相应链接。
本文永久链接: https://www.feiqy.com/use-ssh-private-key/
近期评论