- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想在Centos7上用shell脚本自动生成一对ssh key,我试过了
yes "y" | ssh-keygen -t rsa
echo "\n\n\n" | ssh-keygen...
echo | ssh-keygen..
所有这些命令都不起作用,只需输入一个“enter”,shell 脚本就会在“输入密码(为空表示没有密码)”处停止,我只想知道如何在 shell 中连续模拟多个 'enter'。
如果有人能提供帮助,非常感谢!
最佳答案
我们需要自动完成两个步骤:
输入密码。使用 -N
标志(此示例为空字符串):
ssh-keygen -t rsa -N ''
覆盖 key 文件:
使用 -f
输入路径(在本例中为 id_rsa
)加上一个 here-string 来回答 yes 以下问题:
ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1
或者,在类似 shell 的 bash
下,如果您确实想覆盖以前的,只使用here-string < em>将所有需要的输入输入命令:
ssh-keygen -q -t rsa -N '' <<< $'\ny' >/dev/null 2>&1
来自 ssh-keygen
man 页面:
-N new_passphrase provides the new passphrase.
-q silence ssh-keygen.
-f filename specifies the filename of the key file.
一步一步的解释
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/klashxx/.ssh/id_rsa):
1) 要避免输入 key ,请使用 -f
:
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)?
注意:如果您不关心 RSA 文件名并且一定要覆盖之前的文件名,请查看以下第四点的说明。
2) 现在我们需要对覆盖问题自动回答“y”(让我们为该作业使用 here-string) :
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa <<< y
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)? Enter passphrase (empty for no passphrase):
3) 最后,我们将使用 -N
标志来输入无效通行证:
$ ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa <<< y
Generating public/private rsa key pair.
/home/klashxx/.ssh/id_rsa already exists.
Overwrite (y/n)? Your identification has been saved in /home/klashxx/.ssh/id_rsa.
Your public key has been saved in /home/klashxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:Xo0t6caMB/8TSsigxfY28JIfqYjyqxRZrFrPncx5yiU klashxx@server
The key's randomart image is:
+---[RSA 2048]----+
| |
| . |
| o . |
| + * = |
| +. + BSo= o |
|...o.+o+XO... |
|.. .o.E==+B. . |
|o . ...=.o... |
|.+o. o .. |
+----[SHA256]-----+
4) Extra ball,清理输出,只检查返回码:
$ ssh-keygen -q -t rsa -N '' -f ~/.ssh/id_rsa <<<y >/dev/null 2>&1
$ echo $?
0
覆盖先前 RSA 文件的替代路径(不需要 -f 标志)
注意:只有 bash
像 shell。
如果您不关心 RSA 名称,只想覆盖它,我们需要自动回答这两个问题:
Enter file in which to save the key: /example/path/.ssh/id_rsa already exists.
Overwrite (y/n)?
如果我们手动执行此操作,对于第一个问题,我们只需按 enter,对于第二个,键入 y
并按 enter
.
我们可以使用以下 here-string 来模拟这些操作:
$'\ny'
来自 bash
手册页:
Words of the form $'string' are treated specially. The word expands to"string", with backslash-escaped characters replaced as specified bythe ANSI C standard.
\n new line
所以,如果我们使用 od
来分析我们的字符串:
cat - <<< $'\ny' | od -c
0000000 \n y \n
我们看到我们得到的正是我们需要回答的问题。
第 1 点和第 2 点可以概括为:
ssh-keygen -q -t rsa <<< $'\ny'
最终命令将是:
$ ssh-keygen -q -t rsa -N '' <<< $'\ny' >/dev/null 2>&1
$ echo $?
0
荣誉
@lukasz-dynowski、@redochka、@mellow-yellow、@yeti 和本帖中的其他人。
关于linux - 如何在没有提示的情况下执行 ssh-keygen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43235179/
1 本机创建ssh密钥 ssh-keygen 2 拷贝公共密钥到“被登陆机”输入密码, scp id_rsa.pub root@10.35.0.35:
ssh-agent、ssh-add 都可以在运行 PowerShell/Posh-Git 的 Cmder 上运行 我添加了C:\Program Files\Git\usr\bin环境变量 ssh-ke
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
我不小心为不存在的用户创建了 kengen。命令是 cat ~/.ssh/authorized_keys >> keydir/jpeck.pub 但实际上......我不是故意这样做的。 我已经使用
$ ssh-keygen --help ssh-keygen: unrecognized option: - usage: ssh-keygen [-q] [-b bits] [-t dsa | ec
我运行 git push -u origin master 它告诉我“权限被拒绝(公钥)致命:远程端意外挂断” 然后我在网上查了一下,发现我必须为我在 GitHub 上的帐户生成一个 ssh key
我正在尝试添加 ssh key 以供在 github 上使用,但在我的 xp 上,在命令提示符下 ssh-keygen 不起作用。它给了我以下错误 ssh-keygen' is not recogni
我想在Centos7上用shell脚本自动生成一对ssh key,我试过了 yes "y" | ssh-keygen -t rsa echo "\n\n\n" | ssh-keygen... echo
我正在尝试调用 ssh-keygen通过 bash 使用变量作为输入而不是文件来获取公钥的指纹。我知道我可以使用临时文件来解决此问题,但出于超出此问题范围的原因,我不想这样做。 此方法不有效,因为它说
我不知道如何在我的服务器上为其他用户创建公钥/私钥。在我的服务器上,我通过 shell 键入以下内容 (uiserver):john:> ssh-keygen -t dsa 之后,我输入文件名和密码,
我正在使用以下命令在我的 MAC 上生成 SSH 注册机 ssh-keygen -t rsa -b 4096 -C "" 我想为我的两个 GitHub 帐户创建两个 SSH-keygen,然后分别使用
我跑了ssh-keygen在 OS X 上,当我显示生成的公钥时,我看到我的登录名和机器名称出现在 key 的最后一部分。有没有办法让它使用不同的值或根本不使用它? 最佳答案 从联机帮助页“ssh-k
当我在我的 git bash 中运行 ssh-keygen 时,我被要求输入一个文件名以将 key 保存在那里。 在我输入名字后,我被问到另一个问题: "Enter passphrase" 当我现在开
我需要使用代码隔离Linux机器上的ssh指纹。我可以运行ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub来获取它: [root@foo ssh]# ssh-k
我正在尝试在 Windows 上为 Git 生成 SSH key (我刚刚安装了 2.18.0),但它没有找到名为 ssh_askpass 的东西: d:\src\py\>ssh-keygen -b
我想知道当我在脚本中使用subprocess调用ssh-keygen时是否需要做一些不同的事情。我正在Linux环境中运行。这是我的代码: cfg_r = configparser.Confi
我正在尝试建立与远程服务器的连接,因为我不想每次决定创建公钥-私钥对并将其用于身份验证时都插入密码。 您可以在这两个来源找到我遵循的过程: How to forge.com The Geek stuf
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 已关闭 6 年前。 Improve
我正在尝试使用此处第 7.7 节中的示例使 CyaSSL 的 Keygen 功能正常工作:http://www.yassl.com/yaSSL/Docs-cyassl-manual-7-keys-an
如果我使用 rsa 加密 key 加密静态字符串 + 随机数据,然后在我的程序中,使用相应的 rsa 解密 key 对其进行解密并检查是否存在静态字符串,是否可以避免“纯" key 生成器(不修改可执
我是一名优秀的程序员,十分优秀!