ssh命令(公私钥)

前言

SSH(Secure Shell)是用来在不安全的网络上进行加密通信的一种网络协议。通过 ssh 命令,可以安全地远程连接到另一台计算机,执行命令或管理文件。除了基本的 SSH 连接命令,还有很多选项可用于配置身份验证、端口转发、密钥管理等。

1. 基本 SSH 命令

  • 连接远程主机

    ssh username@hostname

    其中 username 是远程主机的用户名,hostname 是远程主机的 IP 地址或域名。如果使用默认端口(22),可以省略 -p 参数。

  • 指定端口

    ssh -p port username@hostname

    如果远程主机的 SSH 服务运行在非默认端口(如 2222),使用 -p 参数指定端口。

  • 使用不同的私钥文件

    ssh -i /path/to/private_key username@hostname

    默认情况下,SSH 使用 ~/.ssh/id_rsa 作为私钥。如果要使用其他私钥文件,可以通过 -i 参数指定。

  • 通过代理转发连接

    ssh -A username@hostname

    该选项会启用代理转发,允许你从远程主机上使用本地主机的 SSH 密钥。

  • 连接到远程主机并执行单一命令

    ssh username@hostname "command"

    直接在远程主机上执行某个命令,而不进入交互式 shell。

  • 指定用户名和主机

    ssh user@192.168.1.100

2. SSH 密钥管理

SSH 密钥对是基于公钥加密的方法,通常包含一对密钥:公钥和私钥。公钥用于加密,私钥用于解密。使用 SSH 密钥认证时,客户端将公钥放在服务器上,而服务器保存私钥。

生成 SSH 密钥对
  • 生成新的 SSH 密钥对

    ssh-keygen -t rsa -b 2048 -f /path/to/keyfile

    这条命令会生成一个 2048 位的 RSA 密钥对。-f 参数指定密钥文件的路径(例如:~/.ssh/id_rsa)。

    • -t rsa: 生成 RSA 类型的密钥
    • -b 2048: 设置密钥长度为 2048 位
    • -f /path/to/keyfile: 指定密钥文件的路径和文件名
  • 查看公钥内容

    cat ~/.ssh/id_rsa.pub

    公钥一般保存在 ~/.ssh/id_rsa.pub 文件中,可以通过 cat 命令查看公钥内容。

  • 复制公钥到远程主机(使用 ssh-copy-id)

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

    这条命令会将公钥复制到远程主机的 ~/.ssh/authorized_keys 文件中,允许通过密钥认证而不是密码登录。

手动复制公钥到远程主机

如果不能使用 ssh-copy-id,也可以手动将公钥复制到远程主机的 ~/.ssh/authorized_keys 文件中:

  1. 先查看本地的公钥:

    cat ~/.ssh/id_rsa.pub
  2. 登录远程主机,并将公钥添加到 ~/.ssh/authorized_keys 文件:

    ssh username@hostname mkdir -p ~/.ssh echo "your-public-key" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys

3. SSH 配置文件 ~/.ssh/config

你可以通过配置 ~/.ssh/config 文件来简化 SSH 连接配置。以下是一个示例配置文件:

Host myserver HostName 192.168.1.100 User username Port 22 IdentityFile ~/.ssh/id_rsa

这个配置文件允许你用 ssh myserver 来代替长命令 ssh username@192.168.1.100。你可以为不同的主机设置不同的配置。

4. SSH 端口转发

端口转发允许你将远程服务器的端口映射到本地端口或将本地端口映射到远程端口。

  • 本地端口转发 将本地端口映射到远程主机的某个端口。

    ssh -L local_port:remote_host:remote_port username@hostname

    例如,将本地的 8080 端口映射到远程服务器的 80 端口:

    ssh -L 8080:localhost:80 username@hostname
  • 远程端口转发 将远程端口映射到本地主机的某个端口。

    ssh -R remote_port:local_host:local_port username@hostname
  • 动态端口转发(SOCKS代理) 启动一个 SOCKS 代理,允许你通过 SSH 进行安全浏览:

    ssh -D local_port username@hostname

    例如,启动 SOCKS 代理在本地的 1080 端口:

    ssh -D 1080 username@hostname

5. 常用 SSH 命令选项

  • -v, -vv, -vvv:启用调试输出(更高的级别提供更多的调试信息)。

    ssh -vvv username@hostname
  • -X:启用 X11 转发,允许在远程主机上运行图形界面程序并将其显示到本地。

    ssh -X username@hostname
  • -C:启用压缩,用于减少传输数据量(对于低带宽连接有帮助)。

    ssh -C username@hostname
  • -q:安静模式,禁止显示警告或提示信息。

    ssh -q username@hostname
  • -o:指定 SSH 配置选项。可以设置诸如连接超时、连接重试等。

    ssh -o "ConnectTimeout=10" username@hostname

6. 其他实用命令

  • 列出远程主机上的文件

    ssh username@hostname ls /path/to/dir
  • 拷贝文件到远程主机

    scp local_file username@hostname:/path/to/remote/dir
  • 从远程主机拷贝文件到本地

  • 同步本地文件夹与远程主机

    rsync -avz /local/dir username@hostname:/remote/dir

7. 关闭或退出 SSH 会话

  • 退出当前 SSH 会话

    exit
  • 关闭 SSH 会话并终止连接

    logout
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值