一. 要登陆的机器(服务端)
查看 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 "your_email@domain.com"
把公钥拷贝到远程服务器上
ssh-copy-id -i <指定的公钥路径.pub> remote_username@server_ip_address
三. 客户端
使用 用户名密码登陆
ssh user@ip # 然后输入密码
指定密钥登陆
ssh -i <私钥路径> user@<ip或机器名> -p <端口>
为指定机器配置私钥以自动登陆
vim .ssh/config
Host <ip或机器名>
Port <端口号>
User <用户名>
IdentityFile ~/.ssh/<私钥路径>
ControlPersist yes
然后,就可以直接 ssh <ip或机器名> 登录了
四. 服务端配置建议
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
网友评论