ssh-keygen
命令,按提示操作即可。Linux 创建 SSH
SSH(Secure Shell)是一种加密网络协议,用于在不安全的网络上安全地操作远程计算机,本文将详细介绍如何在 Linux 系统上创建 SSH 连接,并配置相关参数。
安装 OpenSSH
我们需要在本地和远程计算机上安装 OpenSSH 软件包,大多数 Linux 发行版都默认包含 OpenSSH 客户端,但可能没有安装服务器端,以下是一些常见的安装命令:
Ubuntu/Debian
sudo apt update sudo apt install openssh-server
CentOS/RHEL
sudo yum install openssh-server
Fedora
sudo dnf install openssh-server
启动和启用 SSH 服务
安装完成后,需要启动并设置 SSH 服务在系统启动时自动运行。
启动 SSH 服务
sudo systemctl start sshd
设置开机自启
sudo systemctl enable sshd
配置 SSH 服务
SSH 的配置文件通常位于/etc/ssh/sshd_config
,你可以使用文本编辑器如vim
或nano
来编辑这个文件。
sudo vim /etc/ssh/sshd_config
修改常用配置项
配置项 | 说明 |
Port | 修改默认端口号(Port 2222) |
ListenAddress | 绑定地址(ListenAddress 0.0.0.0) |
PermitRootLogin | 是否允许 root 用户登录(建议设置为 no) |
PasswordAuthentication | 是否允许密码验证(可以设置为 no,强制使用密钥认证) |
PubkeyAuthentication | 是否允许公钥认证 |
AllowUsers | 允许登录的用户(AllowUsers alice bob) |
AllowGroups | 允许登录的用户组(AllowGroups sshusers) |
保存并关闭文件后,重新启动 SSH 服务使配置生效。
sudo systemctl restart sshd
生成 SSH 密钥对
为了提高安全性,推荐使用 SSH 密钥对进行认证,而不是密码,可以使用以下命令生成密钥对:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
执行上述命令后,会提示你输入文件保存路径和密码短语(passphrase),按回车即可使用默认值,生成的密钥对包括公钥和私钥,默认保存在~/.ssh/id_rsa
和~/.ssh/id_rsa.pub
。
配置公钥认证
将生成的公钥复制到远程服务器上的~/.ssh/authorized_keys
文件中,可以使用ssh-copy-id
命令简化这个过程:
ssh-copy-id user@remote_host
如果远程主机的~/.ssh
目录不存在,你需要手动创建并设置正确的权限:
mkdir -p ~/.ssh chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
测试 SSH 连接
一切配置完成后,可以使用以下命令测试 SSH 连接:
ssh user@remote_host
首次连接时,会提示你是否信任该主机的指纹,输入yes
后按回车即可。
高级配置
使用 SSH 代理
SSH 代理可以使你在多个终端会话中复用一个身份验证,而不需要每次都输入密码或密钥短语,可以使用以下命令启动 SSH 代理:
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_rsa
配置多重跳转(SSH 隧道)
有时你需要通过多个中间服务器才能到达目标服务器,这可以通过 SSH 隧道实现,通过bastion
主机跳转到target
主机:
ssh -J user@bastion ssh user@target
故障排除
无法连接到 SSH 服务
检查 SSH 服务状态:
sudo systemctl status sshd
确保防火墙允许 SSH 端口(默认是22):
sudo ufw allow 22/tcp
权限问题
确保~/.ssh
目录及其父目录的权限正确:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
FAQs
Q: 如何更改 SSH 默认端口?
A: 编辑/etc/ssh/sshd_config
文件,找到Port
配置项,将其改为所需的端口号(Port 2222),然后重启 SSH 服务:sudo systemctl restart sshd
。
Q: 如何禁用密码认证,只使用密钥认证?
A: 编辑/etc/ssh/sshd_config
文件,将PasswordAuthentication
设置为no
,然后重启 SSH 服务:sudo systemctl restart sshd
,确保你已经配置了公钥认证。
小伙伴们,上文介绍了“linux 创建ssh”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。