UNIXETC

使用证书安全快捷的连接SSH服务

目录

经常使用ssh连接服务器的朋友,有时为了安全可能ssh还使用了非默认端口(22),这样每次使用密码登录时,都得按照如下的命令来连接服务器。这样显得有点不方便,因此推荐将密码设置复杂难以回溯,然后使用证书的形式来登录ssh服务器,免去了每次使用密码的麻烦。只要你把证书妥善保管,就会安全如初。

1
ssh user@hostname -p9876

本地生成证书 #

首先使用ssh-keygen命令在本地生成证书,为了方便使用未设置证书密码。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$ ssh-keygen
Generating public/private ed25519 key pair.
Enter file in which to save the key (~/.ssh/id_ed25519):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_ed25519
Your public key has been saved in ~/.ssh/id_ed25519.pub
The key fingerprint is:
SHA256:Kcd0LM......Vams1XJA user@op36
The key's randomart image is:
+--[ED25519 256]--+
|   cef+.=..      |
|  ..oEo+.X       |
|   aaaa+o O      |
|  obbbb= B       |
|cccccc= S .      |
|dddd   + .       |
|O w              |
| o               |
|                 |
+----[SHA256]-----+

设置SSH服务 #

使用scp或者其他方法将本地的public key文件~/.ssh/id_ed25519.pub上传至服务器。

1
scp -P 9876 ~/.ssh/id_ed25519.pub root@hostname:/root/

登录服务器,将/root/id_ed25519.pub复制到~/.ssh/authorized_keys

1
cat id_ed25519.pub ~/.ssh/authorized_keys

修改/etc/ssh/sshd_config文件配置SSH服务

1
2
3
4
5
vi /etc/ssh/sshd_config

## 去掉以下行前注释符(#)
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

接下来重启SSH服务即可

1
2
3
/etc/init.d/ssh restart
### 或者
systemctl restart ssh.service

接下来使用ssh user@hostname -p9876连接服务器试下是否不输入密码成功登录。

在证书可以登录服务器后,可以考虑禁用密码登录以提高安全性。

1
2
3
4
vi /etc/ssh/sshd_config

## 去掉以下行前注释符(#)
PasswordAuthentication no

本地登录SSH小技巧 #

为了不每次输入ssh user@hostname -p9876长串的命令,我们可以在~/.ssh/config中设置服务器别名来快捷登录

1
2
3
4
5
6
7
vi ~/.ssh/config

Host abc  #自定义别名
        User root  #用户名
        Hostname hostname #服务器地址
        Port 9876    #端口号
        IdentityFile ~/.ssh/id_ed25519  #本地证书

设置完成后,就可以使用ssh abc这样简介的方式来连接服务器了。