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 ~/.sshStep 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 软件上 Key中 Public 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