Linux SSH 登录配置
Linux SSH 登录配置
记录两件常做的事:让一台 Linux 能用密码或密钥 SSH 进另一台、在没有 root 的 Ubuntu 上启用 root 登录和免密。两者都绕不开 /etc/ssh/sshd_config。
检查远端 SSH 配置
连不上时,先别急着折腾本地。很多服务器默认就不允许密码认证,或者被安全软件/策略禁掉了密钥连接。先看远端 sshd_config:
sudo grep 'PermitRootLogin' /etc/ssh/sshd_config
sudo grep 'PasswordAuthentication' /etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config
两个关键项:
PermitRootLogin设为yes允许 root 直接登录,without-password表示 root 只能用密钥(更安全)。PasswordAuthentication设为yes才允许密码登录;只想用密钥就设no。
改完重启服务,再核对密钥指纹:
sudo systemctl restart sshd
# 验证密钥指纹
ssh-keygen -lf ~/.ssh/authorized_keys
ssh-keygen -lf ~/.ssh/id_rsa
Ubuntu:从零启用 root 与免密登录
全新的 Ubuntu 默认没启用 root,GUI 也不让 root 登录。下面把这条路打通。
设置 root 密码:
sudo passwd # 先输当前用户密码,再设 root 密码
su root # 用刚设的密码切到 root
全新系统可能连 vim 都没有,先更新源再装:
sudo apt-get update
sudo apt-get install vim
启用 root 的 GUI 登录,改 lightdm 配置 /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf:
greeter-show-manual-login=true # 手工输入用户名和密码
all-guest=false # 不允许 guest 登录
再注释掉 /etc/pam.d/gdm-autologin 和 /etc/pam.d/gdm-password 里阻止 root 登录的那一行(通常是第二行,以 auth required pam_succeed_if.so user != root 之类开头)。
vim 里整行注释技巧:
Ctrl+V进 visual block,方向键选中要注释的行,Shift+I进插入模式,在行首加#,Esc生效。
最后改 /root/.profile,把 mesg n || true 改成 tty -s && mesg n || true,否则 root 登录时会报错。
配置 SSH 免密
确认 ssh 服务装好了:
ps -A | grep ssh # 看到 sshd 说明服务在
# 没有的话:
sudo apt-get update && sudo apt-get install openssh-server
生成密钥并把公钥放进授权文件:
ssh-keygen # 一路回车
cd ~/.ssh/
cp id_rsa.pub authorized_keys
在 /etc/ssh/sshd_config 里确认这几行没被注释掉(#RSAAuthentication 这项较老的版本可能没有,忽略即可):
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
重启 SSH 服务生效。私钥导到本地客户端就能免密登录了。