SSH技能Skill ssh

SSH技能用于建立和管理远程SSH连接,支持密码和密钥认证、SSH配置、文件传输及故障排除,是DevOps、系统运维和网络安全的关键工具。关键词:SSH、远程服务器、安全连接、文件传输、SCP、SSH密钥、远程命令执行、服务器管理。

DevOps 0 次安装 2 次浏览 更新于 3/18/2026

name: ssh description: 建立和管理到远程机器的SSH连接,包括密钥生成、配置和文件传输。当连接到远程服务器、执行远程命令或通过SCP传输文件时使用。 triggers:

  • ssh
  • 远程服务器
  • 远程机器
  • 远程主机
  • 远程连接
  • 安全shell
  • ssh密钥

SSH技能

此技能提供建立和管理到远程机器的SSH连接的能力。

能力

  • 使用密码或密钥认证建立SSH连接
  • 生成和管理SSH密钥对
  • 配置SSH以便于连接
  • 在远程机器上执行命令
  • 在本地和远程机器之间传输文件
  • 管理SSH配置和已知主机

认证方法

密码认证

ssh username@hostname

提示时,您应该向用户询问密码或私钥。

基于密钥的认证

生成新的SSH密钥对:

ssh-keygen -t ed25519 -f ~/.ssh/key_name -C "comment" -N ""

将公钥复制到远程服务器:

ssh-copy-id -i ~/.ssh/key_name.pub username@hostname

使用私钥连接:

ssh -i ~/.ssh/key_name username@hostname

SSH配置

为更轻松的连接创建或编辑SSH配置文件:

mkdir -p ~/.ssh
cat > ~/.ssh/config << 'EOF'
Host alias
    HostName hostname_or_ip
    User username
    IdentityFile ~/.ssh/key_name
    Port 22
    ServerAliveInterval 60
EOF
chmod 600 ~/.ssh/config

然后使用别名连接:

ssh alias

常见SSH选项

  • -p PORT: 连接到特定端口
  • -X: 启用X11转发
  • -L local_port:remote_host:remote_port: 设置本地端口转发
  • -R remote_port:local_host:local_port: 设置远程端口转发
  • -N: 不执行远程命令(对端口转发有用)
  • -f: 在后台运行
  • -v: 详细模式(增加v以获得更详细的输出)

使用SCP传输文件

将文件复制到远程服务器:

scp /path/to/local/file username@hostname:/path/to/remote/directory/

从远程服务器复制文件:

scp username@hostname:/path/to/remote/file /path/to/local/directory/

递归复制目录:

scp -r /path/to/local/directory username@hostname:/path/to/remote/directory/

SSH代理

启动SSH代理:

eval "$(ssh-agent -s)"

向代理添加密钥:

ssh-add ~/.ssh/key_name

故障排除

  • 检查远程SSH服务状态:systemctl status sshd
  • 验证SSH端口是否开放:nc -zv hostname 22
  • 调试连接问题:ssh -vvv username@hostname
  • 检查权限:SSH私钥应具有600权限(chmod 600 ~/.ssh/key_name
  • 验证已知主机:如果主机密钥更改,使用ssh-keygen -R hostname移除旧条目

安全的SSH密钥管理

具有适当权限的本地存储

最基本的方法是确保适当的文件权限:

# 为私钥设置正确的权限
chmod 600 ~/.ssh/id_ed25519
# 为公钥设置正确的权限
chmod 644 ~/.ssh/id_ed25519.pub
# 为SSH目录设置正确的权限
chmod 700 ~/.ssh