文章

使用密钥登录服务器

生成 SSH Key

打开本地终端,使用cd ~/.ssh进入ssh目录,使用以下命令生成公钥和私钥:

1
ssh-keygen

该命令默认使用-t rsa

如果后面使用参数 -f-f 参数指定文件名,例如 ssh-keygen -f 1_rsa,则会默认产生名称为 1_rsa 的密钥和公钥。

然后会要求输入 passphrase,即密钥密码,可以选择为空(按回车即可)。若输入密钥密码,则每次使用密钥登录服务器时都需要输入密钥密码。

该执行结果在当前目录下生成私钥和公钥id_rsaid_rsa.pub

将公钥拷贝到服务器

服务器端的用户目录下,输入ls -a查看,若无.ssh文件夹,则输入以下命令:

1
2
3
4
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys

若存在.ssh文件夹以及authorized_keys文件,则直接将上一节中生成的ssh公钥id_rsa.pub的内容复制到authorized_keys文件内。

本地使用密钥登录服务器

一般生成了密钥后,本地终端就可以直接通 ssh 命令登陆服务器了。

在 VS Code工具或者其他终端工具中登录服务器前,首先配置本地的ssh配置文件。

一般配置文件在~/.ssh/config文件中,在文件最后追加:

1
2
3
4
Host XXX
    HostName xxx.xxx.xxx.xxx
    User root
    IdentityFile ~/.ssh/id_rsa

Host字段为名称,HostName为服务器IP地址,User为登录名,IdentityFile为私钥文件位置。

如果使用默认的 Key id_rsa ,可不指定私钥文件位置。

使用密钥登录时,如果在第一步指定了密钥密码 passphrase,则还需要输入密钥密码。

禁止密码登录

为了防止他人使用密码登录服务器,可以配置ssh禁止密码登录。注意在配置之前,必须保证使用密钥可以登录服务器,否则禁止密码登录后可能会造成无法登录服务器。

在Ubuntu系统中,编辑文件/etc/ssh/sshd_config文件:

1
vim /etc/ssh/sshd_config

找到并修改这一行:

1
PasswordAuthentication yes

改为:

1
PasswordAuthentication no

然后退出vim,返回终端,重启ssh服务:

1
systemctl restart sshd.service

此时无法使用密码登录服务器了。

查看登陆错误日志

Ubuntu 系统下,使用以下命令可以查看错误登陆的日志:

1
cat /var/log/auth.log | grep "Failed password"
本文由作者按照 CC BY 4.0 进行授权