SSH

安装SSH(可选,多数Debian默认已经安装)

Step 1:更新本地软件库&安装SSH

apt-get update
apt-get install ssh
apt-get install openssh-server
允许用户 root 登录(可选,如果root不可登录时)
vi /etc/ssh/sshd_config

/etc/ssh/sshd_config中#PermitRootLogin更改为 PermitRootLogin yes,修改完毕后,按esc键,输入:wq后按enter键执行保存。

Step 3:重启SSH服务

service ssh restart

使用密钥登录

原理(SSH 公钥验证机制) 登录时不传递密码,而是使用一对「非对称金钥」:

  • 一把叫做:公钥(Public Key):存在你的电脑上(WindTerm/Putty/本机)
  • 一把叫做:私钥(Private Key): 存放在服务器上(~/.ssh/authorized_keys)
Step 1: 建立 .ssh目录并设定授权
mkdir -p ~/.ssh && chmod 700 ~/.ssh
Step 2: 在软件 PuTTYgen 生成金钥

生成金钥建议:

  • Type of key to generate: 中选择 EdDSA
  • Cuve to use for generating this key: 后选择 Ed25519(255 bits)
  • (可选)如果你想保护私钥,还可以在 Key Passphrase:Confim passphrase 中输入密码,使用SSH客户端登录时会用到此密码.
  • 最后点击 Generate
Step 3: 并将公钥内容贴在 Debian 上,并设定权限

复制 Putty Key generator 软件上 KeyPublic key for pasting into OpenSSH authorized keys file: 下面的内容后,在Debian中输入

vi ~/.ssh/authorized_keys

清空该文件所有内容,最后按 i 再按鼠标右键贴上之前的公钥内容. 最后按 Esc 后输入 :wq! 后按Enter

最后在Debian上更改更改权限

chmod 600 ~/.ssh/authorized_keys

其他问题:

SSH 服务器是否允許金钥登录?

查看 /etc/ssh/sshd_config 中的這些設定是否正確:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

可用下面命令确认(直接查关键字):

grep -Ei 'pubkey|authorizedkeysfile' /etc/ssh/sshd_config

如有修改,需要重启SSH:

systemctl restart ssh
如果我使用用户 root私钥登入,可以被看出來嘛?

可以,在 Debian 上,登入时的 SSH 金钥记录会被记录在系统日志中,你可以这样查看:

journalctl -u ssh

或者:

grep "Accepted publickey" /var/log/auth.log

如果只想看用户 root登入成功日志:

journalctl -u ssh | grep "Accepted" | grep "root"

日志中的关键字含义:

日志内容 说明
Accepted password for root 表示用 密碼 登入
Accepted publickey for root 表示用 SSH 金鑰 登入
Failed password for root 表示密碼登入 失敗
Authentication refused 拒絕登入(可能因金鑰不符、無權限等)

禁用密码登录

使用下面命令查看当前SSHD配置是否接受密码登录

grep -Ei 'pubkey|authorizedkeysfile' /etc/ssh/sshd_config

禁用密码登录

vi /etc/ssh/sshd_config

PasswordAuthentication yes 更改为 PasswordAuthentication no

然后重启SSHD服务

systemctl restart ssh