ssh常用的一些使用方法

一、以下是一些常用的 SSH 命令:

  1. ssh - 连接到远程服务器,例如:ssh user@host。如果需要使用非默认的 SSH 密钥,则可以使用 -i 参数指定私钥文件。

  2. scp - 在本地计算机和远程服务器之间复制文件,例如:scp file.txt user@host:/remote/folder/。如果需要使用非默认的 SSH 密钥,则可以使用 -i 参数指定私钥文件。

  3. ssh-keygen - 用于创建、管理和转换 SSH 密钥。

  4. ssh-copy-id - 将公钥添加到远程服务器的 authorized_keys 文件中,以便使用 SSH 免密码登录。

  5. ssh-agent - 用于管理 SSH 密钥,以便在不用每次输入密码的情况下连接到多个远程服务器。

  6. ssh-add - 将 SSH 私钥添加到 SSH 代理中,以便在不用每次输入密码的情况下连接到远程服务器。

  7. ssh-keyscan - 用于扫描远程服务器的公钥,以便将其添加到本地计算机的 known_hosts 文件中,从而防止 SSH 主机密钥更改攻击。

这些是 SSH 中一些常用的命令,还有其他一些命令可以帮助您管理 SSH 密钥和连接。您可以使用 man 命令来查看每个命令的详细信息和选项。例如:man sshman ssh-keygen

二、 ssh-keygen 命令的参数的简要说明:

  • -q:静默模式,减少输出信息。

  • -a rounds:指定 key derivation function 迭代的次数,默认是 16。

  • -b bits:指定密钥的位数,默认是 2048 位。根据需要调整位数,例如 4096 位可以提供更高的安全性,但会增加处理时间。

  • -C comment:指定一个注释,将注释添加到生成的密钥中。

  • -f output_keyfile:指定输出的密钥文件名。

  • -m format:指定输出的密钥文件格式,可以是 PEMPKCS8 等。

  • -N new_passphrase:指定新的密钥短语。

  • -O option:指定一些特定的选项,例如 sk-ecdsa-sha2-nistp256@openssh.com 选项启用 ECDSA SSH 密钥。

  • -t type:指定要生成的密钥类型,可以是 dsaecdsaecdsa-sked25519ed25519-skrsa

  • -w provider:指定加密密钥的软件实现。

  • -Z cipher:指定加密算法,例如 blowfish-cbcaes256-cbc

这些参数是 ssh-keygen 命令中的常见选项,可以根据需要进行调整和使用。您可以使用 man ssh-keygen 命令查看完整的选项列表和使用方法。

举例说明:

ssh-keygen -t rsa -b 4096 -C "My RSA key" -f ~/.ssh/my_rsa_key -N "my_password" -m PEM -O "no-port-forwarding" -Z aes256-cbc 

这个命令将生成一个 4096 位的 RSA 密钥,注释为 "My RSA key",输出文件为 ~/.ssh/my_rsa_key,新短语为 "my_password",格式为 PEM,禁用了端口转发,使用 aes256-cbc 算法进行加密。您可以根据需要调整这些参数,以生成适合您需要的 SSH 密钥。

三、如何在一台电脑上配置多个 SSH 密钥

比如新建一个shh key:

ssh-keygen -t rsa -b 4096 -C "my_email@example.com" -f ~/.ssh/my_ssh_key

shh密钥加入代理

ssh-add ~/.ssh/my_ssh_key

请确保为每个密钥生成不同的名称,并将其添加到 SSH 代理中,以便在使用不同的 SSH 密钥时切换。

删除代理:

ssh-add -d ~/.ssh/my_ssh_key

查看代理:

 ssh-add -l,若报错Could not open a connection to your authentication agent.说明SSH 代理尚未启动或无法连接到代理,可以执行:

ssh-agent -k

eval $(ssh-agent)

些命令会终止当前运行的 SSH 代理进程,并重新启动一个新的代理进程

四、不同的密钥用于不同的 Git 仓库

请在 ~/.ssh/config 文件中指定不同的主机别名和密钥文件路径。例如:

Host *
    ForwardAgent yes
    ServerAliveInterval 60
    ControlMaster auto
    ControlPersist 10m


Host github.com
  IdentityFile ~/.ssh/my_github_key

Host gitlab.com
  IdentityFile ~/.ssh/my_gitlab_key

Host myserver
    Hostname example.com
    User myusername
    IdentityFile ~/.ssh/myprivatekey
    Port 22
    ProxyCommand ssh -q proxyserver nc %h %p
    ConnectTimeout 10
    LocalForward 8080 localhost:80


Host myotherserver
    Hostname anotherexample.com
    User myusername
    IdentityFile ~/.ssh/myotherprivatekey
    Port 2222
    ServerAliveInterval 120

Host gerrit
	HostName "192.168.108.54"
	User "shayishow"
	IdentityFile "~/.ssh/id_rsa"
	port 29418
	Host *
	KexAlgorithms +diffie-hellman-group1-sha1
	HostkeyAlgorithms +ssh-rsa
	PubkeyAcceptedKeyTypes +ssh-rsa


上面的Host * 是一个特殊的主机名,用于配置全局选项。

当 SSH 客户端连接到一个主机时,它会首先查找是否有与该主机名匹配的配置,如果没有,就会使用 Host * 中配置的选项。

这意味着,通过在 Host * 部分配置选项,可以让这些选项应用于所有的主机连接。例如,在上面的示例中,Host * 中配置了 ForwardAgentServerAliveIntervalControlMasterControlPersist 等选项,这些选项将应用于所有的 SSH 连接。

如果某个主机的选项与全局选项冲突,那么主机配置中的选项将覆盖全局选项。这样,可以在全局选项的基础上对某个主机进行个性化的配置。

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值