SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络中安全地远程登录和管理服务器。通过正确配置和使用SSH,管理员可以远程管理服务器,传输文件,并确保通信的机密性。本文将深入探讨Linux中SSH的配置和使用,提供详实的示例代码,帮助管理员更全面地了解和运用SSH技术。
在CentOS系统上安装OpenSSH服务器:
sudo yum install openssh-server
安装完成后,启动SSH服务并设置开机自启动:
sudo systemctl start sshd
sudo systemctl enable sshd
编辑SSH配置文件 /etc/ssh/sshd_config
:
sudo nano /etc/ssh/sshd_config
更改默认端口:将默认端口从22更改为非标准端口,如2222,以减少被自动扫描的风险:
Port 2222
禁止root直接登录:为了提高安全性,禁止root用户通过SSH直接登录:
PermitRootLogin no
禁用密码认证:推荐使用密钥认证,禁用密码认证:
PasswordAuthentication no
限制允许登录的用户:只允许特定用户登录,例如仅允许用户 user1
和 user2
登录:
AllowUsers user1 user2
重启SSH服务以应用更改:
sudo systemctl restart sshd
在本地计算机上生成SSH密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
按照提示操作,可以选择保存密钥的位置和输入一个可选的密码短语。
将公钥复制到远程服务器:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote_host
或者手动复制公钥到远程服务器的 ~/.ssh/authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub | ssh user@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
firewalld
或 iptables
配置防火墙规则,限制对服务器的访问,只允许必要的端口对外开放。sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --reload
sudo yum install fail2ban
sudo systemctl start fail2ban
sudo systemctl enable fail2ban
编辑客户端的SSH配置文件 ~/.ssh/config
:
Host myserver
HostName 192.168.1.100
User user
Port 2222
IdentityFile ~/.ssh/id_rsa
连接时直接使用别名:
ssh myserver
本地到远程:使用SCP传输文件到远程主机:
scp -P 2222 local_file user@remote_host:/path
远程到本地:使用SCP从远程主机传输文件到本地:
scp -r user@remote_host:/remote_dir /local_dir
本地端口转发:通过SSH隧道访问内网服务:
ssh -L 8080:internal_host:80 user@jump_host
通过上述步骤,可以显著提高CentOS系统的SSH安全性,减少受到攻击的风险。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
推荐阅读:centos ssh命令行操作指南