服务器测评网
我们一直在努力

Linux创建SSH密钥后如何连接服务器?

在Linux系统中,SSH(Secure Shell)是一种广泛使用的网络协议,用于加密通信并安全地远程管理服务器或计算机,通过SSH,用户可以在不暴露密码等敏感信息的情况下,安全地执行命令、传输文件和管理系统,本文将详细介绍如何在Linux系统中创建SSH连接,包括服务器端配置、客户端连接以及常见的安全优化措施。

Linux创建SSH密钥后如何连接服务器?

安装SSH服务

在开始配置SSH之前,需要先在服务器端安装SSH服务,不同的Linux发行版使用的包管理器不同,以下是常见发行版的安装方法:

基于Debian/Ubuntu的系统

使用apt包管理器安装OpenSSH服务器:

sudo apt update
sudo apt install openssh-server

安装完成后,SSH服务会自动启动,可以通过以下命令检查服务状态:

sudo systemctl status ssh

基于RHEL/CentOS的系统

使用yumdnf包管理器安装:

sudo yum install openssh-server  # CentOS 7及以下
sudo dnf install openssh-server  # CentOS 8及Fedora

安装后启动服务并设置开机自启:

sudo systemctl start sshd
sudo systemctl enable sshd

基于Arch Linux的系统

使用pacman包管理器安装:

sudo pacman -S openssh

启动服务并设置开机自启:

sudo systemctl start sshd
sudo systemctl enable sshd

配置SSH服务

安装完成后,需要对SSH服务进行配置以增强安全性和功能性,主要配置文件位于/etc/ssh/sshd_config

修改配置文件

使用文本编辑器(如nanovim)打开配置文件:

Linux创建SSH密钥后如何连接服务器?

sudo nano /etc/ssh/sshd_config

关键配置项

  • 修改默认端口:默认端口为22,修改为其他端口可降低被扫描的风险:
    Port 2222
  • 禁用root登录:出于安全考虑,建议禁止root用户直接登录:
    PermitRootLogin no
  • 允许特定用户登录:仅允许指定用户通过SSH连接:
    AllowUsers user1 user2
  • 密钥认证优先:强制使用密钥认证而非密码:
    PasswordAuthentication no
    PubkeyAuthentication yes
  • 超时设置:设置连接超时时间(秒):
    ClientAliveInterval 300
    ClientAliveCountMax 3

重启SSH服务

保存配置文件后,重启SSH服务使配置生效:

sudo systemctl restart sshd

生成SSH密钥对

为了更安全地登录,建议使用SSH密钥对进行认证,密钥对包括公钥和私钥,公钥存储在服务器端,私钥保存在客户端。

生成密钥对

在客户端终端运行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa:指定密钥类型为RSA。
  • -b 4096:指定密钥长度为4096位。
  • -C:添加注释,通常使用邮箱地址。

执行后会提示输入保存路径和密码(可选),建议设置密码以保护私钥。

复制公钥到服务器

使用ssh-copy-id命令将公钥复制到服务器:

ssh-copy-id -p 2222 user@server_ip

如果未设置SSH密码,需手动将公钥添加到服务器的~/.ssh/authorized_keys文件中:

cat ~/.ssh/id_rsa.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

客户端连接SSH

配置完成后,即可通过SSH客户端连接到服务器。

基本连接命令

ssh -p 2222 user@server_ip
  • -p:指定非默认端口号。
  • user:服务器上的用户名。
  • server_ip:服务器的IP地址。

使用SSH配置文件

为了避免每次输入复杂参数,可以在客户端配置~/.ssh/config文件:

Host myserver
    HostName server_ip
    User user
    Port 2222
    IdentityFile ~/.ssh/id_rsa

之后可通过简化命令连接:

Linux创建SSH密钥后如何连接服务器?

ssh myserver

SSH安全优化

禁用密码登录

sshd_config中设置PasswordAuthentication no,并重启服务:

sudo systemctl restart sshd

使用Fail2ban防止暴力破解

安装Fail2ban:

sudo apt install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban  # RHEL/CentOS

配置/etc/fail2ban/jail.local文件,启用SSH防护:

[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

启动Fail2ban服务:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

定期更新SSH软件

保持系统及OpenSSH包的最新版本,以修复已知漏洞:

sudo apt update && sudo apt upgrade  # Debian/Ubuntu
sudo yum update  # RHEL/CentOS

常见问题排查

连接被拒绝

  • 检查SSH服务是否运行:sudo systemctl status sshd
  • 确认防火墙是否允许SSH端口(如2222):
    sudo ufw allow 2222  # Ubuntu
    sudo firewall-cmd --add-port=2222/tcp --permanent  # CentOS

权限错误

确保服务器端~/.ssh目录及authorized_keys文件权限正确:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

密钥认证失败

  • 检查公钥是否正确添加到authorized_keys
  • 确认私钥未被泄露,并检查文件权限:chmod 600 ~/.ssh/id_rsa

通过以上步骤,您可以成功在Linux系统中创建并配置SSH服务,实现安全的远程连接,SSH不仅提供了加密通信,还支持密钥认证、端口转发等高级功能,是系统管理的重要工具,在实际使用中,务必注重安全配置,如禁用root登录、使用强密码或密钥、定期更新软件等,以保障服务器安全,通过合理优化SSH设置,可以大幅提升远程管理的效率和安全性。

赞(0)
未经允许不得转载:好主机测评网 » Linux创建SSH密钥后如何连接服务器?