草庐IT

SSH-RSA密钥

道可道名可名 2023-07-25 原文

前言

本文介绍了linux和window环境rsa密钥生成方法, ssh免密登录linux以及gitee和github的密钥使用场景.


目录


正文

ssh-keygen常用参数

参数名示例值参数说明
-C“ssh_test”注释内容: 可写邮箱加用途
-trsa密钥类型: rsa1(SSH-1), rsa(SSH-2), dsa(SSH-2)
-b2048密钥长度: RSA密钥默认是2048位, DSA密钥必须是1024位
-mPEM密钥格式: PEM
-f/test/id_rsa_ssh_test密钥路径文件名, 未填写路径则为当前路径生成文件

生成密钥

linux环境生成密钥

ssh-keygen -t rsa -b 2048 -C "ssh_test"
  • 提示以哪个路径文件名保存, 默认是 /root/.ssh/id_rsa文件, 我们输入自定义文件名id_rsa_ssh_test
  • 提示输入密码(可以填写之后使用时会用到或者不填写直接回车)和确认密码后会在当前文件夹生成密钥文件
  • 公钥的扩展名.pub,另一个没有扩展名的为私钥

win环境生成密钥

  • win10默认安装了OpenSSH客户端可以直接在cmd命令窗口使用, 生成步骤与linux环境类似, 建议生成过程中自定义文件名避免覆盖以前的密钥, 使用密钥时可以采用配置多密钥的方式 (见下文gitee使用场景)
  • 如果有安装git工具也可以使用,在任意文件夹内空白处右键点击 Git Bash Here, 注意生成时要加参数 -m PEM

密钥使用场景

ssh免密登录linux

  • 配置公钥
cd ~/.ssh
vim authorized_keys

i键进入编辑模式, 将公钥文件里的内容新起一行黏贴


Esc退出编辑模式, :冒号键进入底行模式, 输入wq回车保存退出

  • xshell配置私钥
    连接 / 用户身份验证, 导入私钥 若生成密钥时设置了密码则要输入密钥密码
  • finalshell配置私钥
    SSH连接 / 认证, 导入私钥 若生成密钥时设置了密码则要输入密钥密码

    若是git生成的没有配置参数-m PEM, 则密钥是OPENSSL, 会提示不支持此密钥格式, 按照所示方法解决即可

gitee和github ssh免密

  • gitee添加公钥, 设置 / SSH公钥
  • github添加公钥, 设置 / SSH and GPG keys
  • window系统配置私钥
    打开文件 %userprofile%/.ssh, 新建config文件, IdentityFile根据实际情况配置私钥文件
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile 私钥路径/id_ssh_test

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile  私钥路径/id_ssh_test_github

首次使用可以在cmd命令行输入 ssh -T git@gitee.com 以及 ssh -T git@github.com 确认并添加gitee和github到本机SSH可信列表


有关SSH-RSA密钥的更多相关文章

  1. ruby - Capistrano 3 在任务中更改 ssh_options - 2

    我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe

  2. ruby-on-rails - Ruby - 如何从 ruby​​ 上的 .pfx 文件中提取公钥、rsa 私钥和 CA key - 2

    我有一个.pfx格式的证书,我需要使用ruby​​提取公共(public)、私有(private)和CA证书。使用shell我可以这样做:#ExtractPublicKey(askforpassword)opensslpkcs12-infile.pfx-outfile_public.pem-clcerts-nokeys#ExtractCertificateAuthorityKey(askforpassword)opensslpkcs12-infile.pfx-outfile_ca.pem-cacerts-nokeys#ExtractPrivateKey(askforpassword)o

  3. ruby - 使用 ruby​​ gem net-ssh-multi 同时在多个服务器上执行 sudo 命令 - 2

    在previousquestion中我想出了如何在多个服务器上启动经过密码验证的sshsession来运行单个命令。现在我需要能够执行“sudo”命令。问题是,net-ssh-multi没有分配sudo需要运行的伪终端(pty),导致以下错误:[127.0.0.1:stderr]sudo:sorry,youmusthaveattytorunsudo根据documentation,可以通过调用channel对象的方法来分配伪终端,但是,以下代码不起作用:它会生成上面的“notty”错误:require'net/ssh'require'net/ssh/multi'Net::SSH::Mul

  4. 【Linux操作系统】——网络配置与SSH远程 - 2

    Linux操作系统——网络配置与SSH远程安装完VMware与系统后,需要进行网络配置。第一个目标为进行SSH连接,可以从本机到VMware进行文件传送,首先需要进行网络配置。1.下载远程软件首先需要先下载安装一款远程软件:FinalShell或者xhell7FinalShellxhell7FinalShell下载:Windows下载http://www.hostbuf.com/downloads/finalshell_install.exemacOS下载http://www.hostbuf.com/downloads/finalshell_install.pkg2.配置CentOS网络安装好

  5. ruby - Net::SSH sudo 命令在输入密码后挂起 - 2

    我一直在尝试使用Thor编写一个小型库,以帮助我快速创建新项目和站点。我写了这个小方法:defssh(cmd)Net::SSH.start(server_ip,user,:port=>port)do|session|session.execcmdendend只是协助我在需要时在远程服务器上运行快速命令。问题是当我需要在远程端的sudo下运行命令时,脚本似乎卡在我身上。例如当执行这个...ssh("sudocp#{file_from_path}#{file_to_path}")脚本会提示我输入密码[sudo]passwordforuser:但是在输入之后整个事情就挂起。有人会碰巧知道它为

  6. ruby - 如何在 Ruby 中使用 net-ssh sudo su - 2

    我正在尝试弄清楚如何在Ruby中的sudosu-#{su_user}之后发送多个net-ssh命令链。我当前的代码在下面,并且挂起sudosu命令,即使在send_data"#{password}\n"之后也是如此。同时,在系统上,手动执行sudosu-admin2不需要输入密码。如有任何帮助,我们将不胜感激!require'rubygems'require'net/ssh'host='hostA'user='admin'password='hostA_pwd'su_user='Admin2'Net::SSH.start(host,user,:password=>password)do

  7. ruby - 从 Ruby 打开 RSA 私钥 - 2

    我认为我知道如何创建自定义的加密RSAkey,但我如何才能像ssh-keygen那样读取一个加密的key?我知道我可以做到:OpenSSL::PKey::RSA.new(File.read('private_key'))但是OpenSSL要求我提供密码...我如何将它作为参数传递给OpenSSL?而且,我如何创建一个与ssh-keygen生成的兼容的?我做这样的事情来创建私有(private)加密key:pass='123456'key=OpenSSL::PKey::RSA.new(1024)key="0000000000000000#{key.to_der}"c=OpenSSL::C

  8. ruby net-ssh 登录 shell - 2

    有什么方法可以使用net-ssh在ruby​​中获取登录shell?这可能吗?我所说的登录shell是指源/etc/profile.. 最佳答案 Net-SSH级别太低,无法简单地预先提供(无论如何,现在是这样)。您可以查看基于Net-SSH构建的Net-SSH-Shell以添加登录shell功能:https://github.com/mitchellh/net-ssh-shell该实现可靠且有效,但我发现它不太有用,因为您无法专门提取诸如stderr或退出状态之类的内容,因为这些命令在子shell中运行,因此您只能获取stdout

  9. ruby - 使用 Ruby 和 net-ssh,如何通过 Net::SSH.start 使用 key_data 参数进行身份验证? - 2

    我已经阅读了net-ssh文档,但我仍然感到困惑。我可以手动进行身份验证(使用ssh-i...),也可以将key放在文件中并使用:keys参数。但是,我不想使用:keys参数,我想使用:key_data参数。任何人都可以举一个工作的例子吗?出于某种原因,直接将字符串输入:key_data是行不通的,它给出了错误:“既不是PUBkey也不是PRIVkey::嵌套的asn1错误”。当然,我用谷歌搜索了一下,它基本上告诉我要确保key是PEM格式。而且,当然是。有任何想法吗?如果需要,我可以提供更详细的信息... 最佳答案 我看到这个问题

  10. ruby - 错误 "non-absolute home"通过网络 :SSH - 2

    有问题的代码Net::SSH.start('servername','user')这将返回“非绝对主页”。“用户”实际上有一个主目录。一种建议的方法是使用IdentityFile的完整路径修改~/.ssh/config。这并没有解决问题。其中最疯狂的部分是,如果通过irb或控制台调用,代码可以正常工作。当我们尝试从类方法(使用相同的代码)中调用它时,它会返回“非绝对主页”错误。“用户”也可以通过命令行ssh进入服务器而不会出现问题。服务器正在运行Ubuntu。更新感谢@Phrogz-解决方法是将ENV['HOME']设置为'/home/deploy'。但是,我还没有弄清楚为什么$HOM

随机推荐