Linux系统中,SSH(Secure Shell)是一种用于远程登录和安全数据传输的重要工具,以下是详细的SSH配置指南:
安装SSH服务
-
检查是否已安装:在终端输入
ssh -V
查看SSH客户端版本,输入sshd -V
查看SSH服务端版本,若未安装,则进行安装。 -
安装SSH服务端和客户端:不同的Linux发行版安装命令有所不同,例如在Ubuntu/Debian系统中,使用
sudo apt-get update
更新软件源,然后sudo apt-get install openssh-server
安装SSH服务端,sudo apt-get install openssh-client
安装SSH客户端;在CentOS/RHEL系统中,使用sudo yum update
更新软件源,然后sudo yum install openssh-server
安装SSH服务端,sudo yum install openssh-clients
安装SSH客户端。
配置SSH服务端
-
修改配置文件:SSH服务端的主配置文件是
/etc/ssh/sshd_config
,使用文本编辑器(如vi
或nano
)打开该文件,例如sudo vi /etc/ssh/sshd_config
,常见的配置选项如下:- Port:设置SSH服务监听的端口号,默认是22,为了提高安全性,可以将其修改为其他端口号,如2222,修改后需重启SSH服务使配置生效。
- PermitRootLogin:设置是否允许root用户通过SSH登录,出于安全考虑,一般建议设置为
no
,禁止root远程登录。 - PasswordAuthentication:设置是否允许使用密码认证,可以将其设置为
no
,只允许使用密钥认证,以提高安全性。 - AllowUsers:指定允许通过SSH登录的用户名,后面跟用户名列表,多个用户名用空格分隔。
-
设置登录欢迎消息:可以在
/etc/ssh/sshd_config
中设置Banner
选项,指定一个包含欢迎消息的文件路径,当用户登录时,会先显示该文件中的内容,创建/etc/ssh/banner_message
文件,在其中输入欢迎消息,然后在sshd_config
中添加Banner /etc/ssh/banner_message
。 -
限制登录时间和IP范围:通过编辑
/etc/security/time.conf
文件,可以限制用户登录时间,添加规则sshd;;user;Al0800 1700
,表示用户user
只能在8点到17点之间登录,还可以通过编辑/etc/hosts.allow
和/etc/hosts.deny
文件来限制允许或禁止登录的IP范围,在/etc/hosts.allow
中添加sshd: 192.168.1.0/24
,表示只允许192.168.1.0网段的IP访问SSH服务。
配置SSH客户端
-
生成密钥对:在客户端计算机上,使用
ssh-keygen
命令生成密钥对。ssh-keygen -t rsa
会生成RSA类型的密钥对,包括私钥id_rsa
和公钥id_rsa.pub
,将公钥复制到服务器端的~/.ssh/authorized_keys
文件中,以便实现免密码登录。 -
配置别名:可以通过编辑
~/.ssh/config
文件来为经常访问的服务器设置别名,简化登录命令。
| 配置项 | 值 |
| –| –|
| Host | myserver |
| HostName | 192.168.1.100 |
| User | username |
| Port | 22 |
| IdentityFile | ~/.ssh/id_rsa |这样,在登录时就可以使用
ssh myserver
代替复杂的命令。
重启SSH服务
在完成SSH配置后,需要重启SSH服务使配置生效,在Ubuntu/Debian系统中,使用sudo systemctl restart ssh
或sudo service ssh restart
命令;在CentOS/RHEL系统中,使用sudo systemctl restart sshd
或sudo service sshd restart
命令。
常见问题及解决方法
-
无法连接SSH服务器:可能是防火墙阻止了SSH端口的访问,需要检查防火墙设置,允许SSH服务的端口通过,在Ubuntu中使用
sudo ufw allow 22
允许22端口通过防火墙;在CentOS中使用firewall-cmd --permanent --add-service=ssh
添加SSH服务到防火墙允许列表,并使用firewall-cmd --reload
重新加载防火墙配置。 -
密钥认证失败:可能是公钥没有正确添加到服务器端的
authorized_keys
文件中,或者权限设置不正确,需要检查公钥内容是否正确,以及authorized_keys
文件和.ssh
目录的权限是否为700和600。
FAQs
问题1:如何更改SSH的默认端口号?
回答:编辑SSH服务端的配置文件/etc/ssh/sshd_config
,找到Port
选项并将其值修改为想要设置的端口号,例如Port 2222
,保存文件后,重启SSH服务使配置生效,需要确保防火墙允许新设置的端口号通过。
问题2:如何禁止root用户通过SSH登录?
回答:打开SSH服务端的配置文件/etc/ssh/sshd_config
,找到PermitRootLogin
选项,将其值设置为no
,保存文件后,重启SSH服务,这样,root用户将无法通过SSH远程登录到服务器,提高了
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/54270.html