hg push
而不要求输入密码)。考虑到我仍在使用相同的主目录,从那时到现在可能发生了什么。$ cat .hg/hgrc
[paths]
default = ssh://hg@bitbucket.org/tshepang/bloog
$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa':
pushing to ssh://hg@bitbucket.org/tshepang/bloog
searching for changes
...
#1 楼
您需要使用ssh代理。简短的答案:在推入之前尝试$ ssh-add
。在询问时提供密码。
如果尚未运行ssh代理,则会收到以下消息:
Could not open a connection to your authentication agent.
情况下,您可以启动一个环境并以此设置环境
eval $(ssh-agent)
,然后重复执行
ssh-add
命令。值得一看ssh代理手册。
评论
您可以只输入ssh-agent来评估什么?
–詹姆斯·麦克马洪
17年9月18日在17:07
它显示一些命令,这些命令使您可以使用它,而不会为您执行它们。 eval进行了谴责。
– tshepang
18-2-3在9:21
与原始问题无关,但是如果您在GitHub,Bitbucket等上仍然遇到这些问题,请确保您使用的是git / ssh URL,而不是http,它将继续询问用户名和密码。
–捷克文
18年6月11日在7:18
并且,如果您没有默认密钥,或者想添加多个密钥,请ssh-add / path / to / key
– Alex Shroyer
19 Sep 8'在18:19
#2 楼
解决此问题的方法是使用ssh-agent
和ssh-add
:$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa:
之后,将密码短语保存为当前会话。不会再被问到了。
评论
大多数人根本不想为自己的密码短语感到烦恼。
– connexo
18年6月16日在16:55
@stefano,我在Centos上,问题是每次我重新连接到ssh时都重复这些步骤!
– SlimenTN
20年6月15日在14:41
#3 楼
我使用钥匙串来管理ssh密钥。它也可以在Debian中使用,因此也可以在Ubuntu中使用apt-get install keychain
这是Debian钥匙串软件包页面。如您所见,该项目不是很活跃,但是对我有用。我还在这里的另一个答案中对此发表了一些评论
评论
//,这对我有用。它比ssh-agent更好,因为每次打开终端时都不需要输入ssh密钥密码。
– Nathan Basanese
2015年9月10日19:12
@NathanBasane您是说使用钥匙串不需要在每次打开终端时都输入ssh密钥密码吗?您如何配置?因为每次打开终端时,钥匙串都会不断询问密码,尽管这只是我在引导后第一次打开密码,但仍然如此。我不想每次都输入密码。
– m4l490n
18年1月1日在19:20
@ m4l490n否,如果您使用的是钥匙串,则无需在每次打开终端时都输入ssh密钥密码。但是启动后确实需要输入一次。密码短语不会保存到磁盘-这样会很不安全。
– Faheem Mitha
18年1月1日在20:27
对我来说,每次我登录时都会询问(我在远程服务器上有一个git存储库+ ssh键,每次我执行“ git pull”时都需要输入密码)
–马丁·托马
19年5月5日在18:30
@MartinThoma看来错了。检查是否已正确配置.ssh。特别是您的外壳是否配置正确?如果仍然无法使用,并且您无法解决问题,可以提出问题。
– Faheem Mitha
19年6月5日在22:30
#4 楼
创建(或编辑,如果存在)以下〜/ .ssh / config文件:Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_rsa
评论
但是我为每项服务使用不同的密钥对...
– connexo
18年6月16日在16:53
@connexo,您可以将通配符星号替换为您的主机名,并将“ id_rsa”替换为相应的私钥
–ness-EE
18年6月25日在13:26
我需要在UseKeychain是的上方添加IgnoreUnknown AddKeysToAgent,UseKeychain。
–consideRatio
18年7月22日在23:36
我收到此错误:“ UseKeychain yes”行上的“ Bad configuration option:usekeychain”。
– m4l490n
18-10-31在15:09
它在consideRatio注释中的选项之外起作用。 @ m4l490n您也可以尝试使用该选项,但如果没有该选项,我也会遇到相同的错误消息。
–рüффп
20 Mar 24 '20在10:23
#5 楼
为方便起见,最佳方法是jmtd和Faheem的答案的组合。单独使用
ssh-agent
意味着需要为打开的每个新终端创建ssh-agent
的新实例。 keychain
初始化后将要求输入私钥的密码并将其存储。这样,您的私钥就受到密码保护,但是您不必一遍又一遍地输入密码。这样做的缺点是,一旦打开终端,它就会立即初始化您的钥匙串。更灵活的方法是将
/etc/profile.d/
与特定的.bash_profile
会话结合在一起。因此,在.bashrc
中:tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
...然后这只是在需要时启动安全的
keychain
会话(从键绑定启动)的一种情况:<现在,当您启动特定的tmux
会话时,您的钥匙串将仅初始化一次。只要该会话持续进行,您就可以访问这些.bash_profile
密钥并推送到您的远程存储库。评论
我将如何在远程计算机上使用它?我修改了第二个脚本以检查$ SSH_CLIENT,如果存在,则不执行urxvtc,仅执行tmux。可以,但是问题是.bash_profile部分。当我第一次登录该框时,它显示“找不到服务器:连接被拒绝”,这是“ tmux ls”的输出。然后,当我执行第二个脚本时,tmux要么启动一个新会话,要么附加到现有会话,但是没有钥匙串提示。然后,当我退出会话时,钥匙串提示在那里等待。
– J.C. Yamokoski
2012年2月20日15:13
如果没有会话,我已经更新了使tmux输出静音的答案。
– Jasonwryan
2012年2月20日在18:08
谢谢,但这仍然不能解决钥匙串问题。 tmux创建新会话,但直接进入任何空提示。仅当我退出tmux会话时,我才能看到钥匙串提示询问我的密码短语。
– J.C. Yamokoski
2012年2月20日在20:08
我想我应该停止说钥匙串了,因为钥匙串只在.bash_profile中执行。问题出在执行ssh-add。虽然,如果我在创建tmux会话后手动运行ssh-add,它会起作用。
– J.C. Yamokoski
2012年2月20日在20:17
跳过第二个脚本,仅从.profile启动安全的tmux会话-这样,登录后将立即提示您输入密钥。
– Jasonwryan
2012年2月20日在20:29
#6 楼
您可以使用sshpass
:$ sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server
您只需要添加
sshpass -p yourpassphrase
,然后再附加通常的ssh
命令即可。评论
这听起来真是个愚蠢的主意。这样会不会在您的Shell历史记录中以明文形式显示您的密码?
– connexo
18年6月16日在16:54
确实如此,但是您不应该使用密码来保护会话吗?
– Belka
18年6月18日在8:01
即使您这样做,您还有多少次同事坐在您旁边并帮助您/向您学习?
– connexo
18年6月18日在14:31
我对此表示赞同。我正在测试大量使用SSH的安装脚本套件。我不断创建和销毁SSH密钥/对。我需要零交互。我根本不在乎有人看到他们的密码,因为它们没有用。我讨厌看到那些头脑狭窄的人胆怯地投下反对票,而不赞成“不以我认为的方式使用计算机”的人。
–马丁·布拉姆威尔
20年8月22日在19:17
@MartinBramwell终于有人像我一样。计算机只是工具,我们必须根据我们的需要弄清楚如何使用它们!
– Belka
20年8月24日在8:21
评论
是否不创建仅提供给一个主机的无密码短语的密钥是一种选择?它在github上对我有用