为Ubuntu VPS设置密钥登陆加强安全性

以需要配置密钥登陆的用户登陆VPS,进入主目录,执行:

1
2
cd ~
mkdir .ssh

建立存放密钥的文件夹。

执行:

1
chmod 0700 .ssh

设置正确的权限。解释一下,700三个数分别对应用户 组 其他人的权限分数,4代表读,2代表写,1代表执行。700即赋予所属用户全部权限,其他人没有任何权限。这是必要的,为了保护ssh密钥安全。

执行:

1
ssh-keygen -t rsa/ecdsa

算法可以自行选择一种,ECDSA的体积更小,但支持程度不够高,如果你用现代操作系统,尽管用ECDSA。

接下来会询问一系列信息,可以直接回车默认。

注意这两项,要求你给私钥提供一个密码。直接留空就会无密码。如果选择无密码,可以实现免密码登陆(就像开头图片),但是必须保护好你的私钥。

之后会在~/.ssh下生成idecdsa(rsa)以及id*.pub两个文件。.pub文件是公钥文件,需要保存在服务器上。另一个是私钥文件。二者都是纯文本。执行:

1
cat id_ecdsa

复制下来,放到本地。

执行:

1
2
3
mv id_ecdsa.pub authorized_keys
chmod 0600 authorized_keys
rm id_ecdsa

编辑/etc/ssh/sshd_config,设置如下三项:

1
2
3
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

执行

1
2
3
systemctl restart ssh
#14.04
service ssh restart

本机
Git Bash执行:

1
2
3
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
vim ~/.ssh/myserver

贴入私钥,执行:

1
chmod 0600 ~/.ssh/myserver

设置正确权限。

建立用户配置文件:

1
2
touch ~/.ssh/config
vim ~/.ssh/config

贴入如下内容

1
2
3
4
5
Host server
HostName your_IP
Port your port
User root
IdentityFile ~/.ssh/myserver

替换为你需要的值以后,就可以直接用

1
ssh server

一键登录服务器。