Ubuntu 配置 ssh 登陆

一. 要登陆的机器(服务端)

查看 ssh 服务有没有安装

systemctl status ssh

(ubuntu20)下面的输出表示 ssh 服务端没有安装

Unit ssh.service could not be found.

(ubuntu20)下面的输出表示 ssh 服务端已经安装

● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: ...(省略)

(如果没有安装)安装 ssh 服务

sudo apt install openssh-server

启动和关闭 ssh 服务

设置开机启动 ssh 服务(装完 openssh-server 默认就是开启的)
sudo systemctl enable ssh

设置开机默认不启动 ssh 服务
sudo systemctl disable ssh

启动 ssh 服务(装完 openssh-server 默认就已经启动了)
sudo systemctl start ssh

关闭 ssh 服务
sudo systemctl stop ssh

打开防火墙

ubuntu20 默认使用 ufw 管理防火墙

查看防火墙状态
sudo ufw status

开启/关闭防火墙(ubuntu20 默认是关闭)
sudo ufw enable | disable

打开/关闭端口
sudo ufw allow ssh
sudo ufw deny ssh

端口也可以这么写
sudo ufw allow 443/tcp # (以https为例)
sudo ufw allow 8000:8100/udp # 开放 udp 端口 8000-8100

查看防火墙规则
sudo ufw status numbered

二. 配置密钥登陆

生成密钥
ssh-keygen -t rsa -b 4096 -C "[email protected]"

把公钥拷贝到远程服务器上
ssh-copy-id -i <指定的公钥路径.pub> remote_username@server_ip_address

三. 客户端

使用 用户名密码登陆
ssh user@ip # 然后输入密码

指定密钥登陆
ssh -i <私钥路径> user@ -p <端口>

为指定机器配置私钥以自动登陆
vim .ssh/config

Host 
    Port <端口号>
    User <用户名>
    IdentityFile ~/.ssh/<私钥路径>
    ControlPersist yes

然后,就可以直接 ssh 登录了

四. 服务端配置建议

sudo vim /etc/ssh/sshd_config

PasswordAuthentication yes
# 是否允许密码验证,建议允许

ChallengeResponseAuthentication no
# 允许任何的密码认证!所以,任何 login.conf 规定的认证方式,均可适用!
# 但目前我们比较喜欢使用 PAM 模块帮忙管理认证,因此这个选项可以设定为 no 喔!

UsePAM yes
# 利用 PAM 管理使用者认证有很多好处,可以记录与管理。
# 所以这里我们建议你使用 UsePAM 且 ChallengeResponseAuthentication 设定为 no 

重启 ssh 服务(sshd)以使配置生效
sudo systemctl restart ssh

参考

  • Ubuntu如何配置SSH服务端支持远程登录
  • ufw设置
  • sshd配置文件参数解释和建议
  • 如何在Ubuntu 20.04上设置SSH密钥

你可能感兴趣的:(Ubuntu 配置 ssh 登陆)