29、远程连接 ssh

1、SSH(Secure Shell)

是一种加密的网络传输协议,用于在不安全的网络中提供安全的远程登录和其他安全网络服务。

安装 SSH 服务端

// Ubuntu/Debian
sudo apt update
sudo apt install openssh-server

// CentOS/RHEL
sudo yum install openssh-server
//
sudo dnf install openssh-server

// 启动服务
sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

配置文件

// 服务端配置文件
/etc/ssh/sshd_config

// 客户端配置文件
/etc/ssh/ssh_config
~/.ssh/config

SSH 服务端配置详解

// 备份原配置
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup

// 编辑配置
sudo vim /etc/ssh/sshd_config

// 基本配置
Port 22                    // SSH端口(建议修改)
ListenAddress 0.0.0.0      // 监听地址
Protocol 2                 // 只使用SSH2

// 认证配置
PermitRootLogin no         // 禁止root登录(安全建议)
PasswordAuthentication yes // 允许密码认证
PubkeyAuthentication yes   // 允许公钥认证

// 用户限制
AllowUsers user1 user2     // 只允许特定用户
DenyUsers baduser          // 拒绝特定用户
MaxAuthTries 3             // 最大认证尝试次数

// 其他安全配置
ClientAliveInterval 300    //  客户端活动检查间隔
ClientAliveCountMax 3      //  客户端活动检查次数
X11Forwarding yes          // 允许X11转发

连接语法:

ssh [选项] [用户名@]主机名 [命令]
-p port          // 指定端口
-l username      // 指定用户名
-i identity_file // 指定私钥文件
-X               // 启用X11转发
-Y               // 启用可信X11转发
-L port:host:hostport  //  本地端口转发
-R port:host:hostport  // 远程端口转发
-D port         // 动态端口转发(SOCKS代理)
-N               // 不执行远程命令
-f               // 后台运行
-T               // 禁用伪终端分配

如:

// 基本连接(使用当前用户名)
ssh 192.168.1.100

// 指定用户名
ssh username@192.168.1.100
ssh -l username 192.168.1.100

// 指定端口
ssh -p 2222 username@192.168.1.100

// 执行远程命令
ssh username@hostname "ls -l /tmp"
ssh username@hostname "df -h"

// 详细输出(调试用)
ssh -v username@hostname
ssh -vvv username@hostname  # 更详细

SSH 密钥认证

生成 SSH 密钥对

// 生成RSA密钥(4096位)
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

// 生成Ed25519密钥(更安全更快)
ssh-keygen -t ed25519 -C "your_email@example.com"

// 指定密钥文件路径
ssh-keygen -t rsa -b 4096 -f ~/.ssh/my_key

// 生成过程交互示例:
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): [输入密码]
Enter same passphrase again: [确认密码]

复制公钥到远程主机

// 方法1:使用ssh-copy-id(推荐)
ssh-copy-id -i ~/.ssh/id_rsa.pub username@hostname

// 方法2:手动复制
cat ~/.ssh/id_rsa.pub | ssh username@hostname "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

// 方法3:手动创建(需要登录远程主机)
// 在远程主机上执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
vim ~/.ssh/authorized_keys  # 粘贴公钥内容
chmod 600 ~/.ssh/authorized_keys

使用密钥连接

// 自动使用默认密钥(~/.ssh/id_rsa)
ssh username@hostname

// 指定密钥文件
ssh -i ~/.ssh/my_key username@hostname

// 使用ssh-agent管理密钥
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/my_key
ssh-add -l  # 列出已加载的密钥

 

posted @ 2025-11-18 09:59  chao_xiong  阅读(9)  评论(0)    收藏  举报