基本信息
- CentOS :CentOS Linux release 7.6.1810 (Core)
- SELinux:enforced
- Firewall:enforcing
生成ssh密钥对
- 生成密钥对
ssh-keygen -t rsa -b 2048
#默认存放的位置是/home/user/.ssh,使用的是公钥id_rsa.pub - 从服务器中将私钥复制到本机
- 或者使用本地生成的密钥对,把公钥复制到服务器中
修改ssh配置文件
- 备份原文件
cd /etc/ssh && sudo cp sshd_config sshd_config.old
- 修改ssh配置文件
sudo vi sshd_config
对以下选项进行修改:
port 9022
ListenAddress 192.168.0.91
PermitRootLogin no
MaxAuthTries 4
AuthorizedKeysFile /home/user/.ssh/id_rsa.pub
PasswordAuthencation no
PermitEmptyPasswords no
复制代码
添加SELinux策略
- 如果不添加SELinux策略,启动sshd服务会有Permission denied报错;
- 查看ssh的SELinux端口
sudo semanage port -l | grep ssh
如果提示没有semanage命令,使用命令sudo yum whatproides /usr/sbin/semanage
查看需要安装的软件包;
安装软件包sudo yum install policycoreutils-python -y
,之后再重新查看ssh的端口号;
- 添加策略
sudo semanage port -a -t ssh_port_t -p tcp 9022
sudo semanage port -l | grep ssh
添加Firewall策略
- 只允许本机或某个网段通过指定的端口号ssh登录到服务器
su root
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.0.90" port port="9022" protocol="tcp" accept' --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all
复制代码
重启sshd服务
- 使用systemctl重启sshd服务
sudo systemctl restart sshd
远程ssh登录
- Linux下ssh登录
ssh -p 9022 user@server_host
或者使用Linux本机下的ssh密钥对 ssh-copy-id user@server_host
- Windows下ssh登录 使用putty,配置服务器地址和端口号,选择ssh_key验证登录
转载于:https://juejin.im/post/5cbed121f265da03a630d895