本地多个 SSH KEY 的管理
日常办公中常遇见本地需要生成多个 ssh key 的情况,使用 ssh-keygen 生成的会覆盖原有的,导致以前的秘钥无法使用。在本地 ~/.ssh/
文件夹下建立 config
文件可对不同的远程服务器连接进行管理,比如有两个 github 账户,或者两个 git 服务器等等。
Host vps(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh vps)
User 这里填用户名(如:root)
HostName 这里填服务器地址也可以是域名(如:server.xxoo.com)
Port 这里填服务器 open-ssh 端口(默认:22)
IdentityFile 这里是刚刚生成的私钥文件地址(如 ~/.ssh/id_rsa)
免密码登录
- 本地生成秘钥
ssh-keygen -t rsa -C "your@email.com"
,其中pub
为公钥
会提示生成的秘钥文件名,可以写上自己的秘钥文件,然后通过上面的管理办法进行管理
Generating public/private rsa key pair.
Enter file in which to save the key (/home/vagrant/.ssh/id_rsa):~/.ssh/id_rsa_test
然后不用输入 passphrase,会生成:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_test.
Your public key has been saved in id_rsa_test.pub.
The key fingerprint is:
f6:90:bb:03:13:3c:08:41:22:a2:73:71:a1:61:c5:a7 your@email.com
The key's randomart image is:
+--[ RSA 2048]----+
|+.*++. |
|+o.=. . |
|o o. = |
| o E + . |
| oS |
| o. + |
| o. . |
| .. |
| .. |
+-----------------+
再根据上述管理方法配置config
文件 - server 端变更配置
sshd_config
$ sudo vim /etc/ssh/sshd_config
PermitRootLogin no # 禁止 root 登录
RSAAuthentication yes #RSA认证
PubkeyAuthentication yes #开启公钥验证
AuthorizedKeysFile %h/.ssh/authorized_keys #验证文件路径
PasswordAuthentication no #禁止密码认证
PermitEmptyPasswords no #禁止空密码 - 在 server 端用户目录下创建文件夹
~/.ssh/
并变更权限为700
,创建文件~/.ssh/.authorized_keys
并变更权限为644
- 把本地的公钥内容 id_rsa_test.pub 的内容复制粘贴到 server 端的
~/.ssh/authorized_keys
文件中 - 重启 server 端 SSH 服务
$ sudo service ssh restart
# 或者
$ sudo /etc/init.d/ssh restart
总结
禁用 root 登录可以有效提高系统的安全性,当然还有其他的一些方法:
- /etc/hosts.allow 及 /etc/hosts.deny 添加
$ sudo vim /etc/hosts.allow
sshd: 127.0.0.1 192.168.1.0/255.255.255.0 192.168.100.0/255.255.255.0
$ sudo vim /etc/hosts.deny
sshd : ALL - iptables 封包过滤防火墙
$ sudo vim /usr/local/virus/iptables/iptables.allow
iptables -A INPUT -i $EXTIF -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $EXTIF -s 192.168.100.0/24 -p tcp --dport 22 -j ACCEPT - 尽量不要开放 ssh 登录权限给外网用户