linux如何配置ssh
- Linux
- 2025-07-11
- 2434
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远程登录到服务器,提高了
