我正在编写一个脚本,允许我一次从所有服务器检索文件。我有 SSH 密钥以便登录我的服务器。但是,我的 SSH 密钥需要密码。
我正在编写的脚本不会自动化,它只会手动运行。所以我的脚本会提示用户输入 SSH 密钥密码。
我如何在连接到每个服务器时将密码发送到 SSH 密钥。我试图避免为每台服务器输入我的密码。
我知道我可以使用“期望”,但我希望有一种简单的方法可以做到这一点。也许一些环境变量?
谢谢。
我有一个 ssh 脚本,它在远程系统上使用 ssh 密钥转发来在更远程的系统中执行操作。
我必须在屏幕会话中运行脚本,以便我可以从中分离。但是需要存在通过 ssh-key-forwarding 授予远程系统的授权。至少在脚本完成之前。
任何想法如何去做?
我配置了密钥,以便我可以像这样登录到 SVN_HOST:
ssh <USER_NAME>@<SVN_HOST>
Run Code Online (Sandbox Code Playgroud)
将在没有密码提示的情况下将我登录到 SVN_HOST。到现在为止还挺好; 然而:
svn update svn+ssh://<USER_NAME>@<SVN_HOST>/<PATH_TO_REPO> <DEST_PATH>
Run Code Online (Sandbox Code Playgroud)
仍然提示:
<USER_NAME>@<SVN_HOST>'s password:
Run Code Online (Sandbox Code Playgroud)
当我输入密码时,它按我的预期工作;但是,我不明白为什么它坚持在 svn+ssh 情况下提示输入密码。
提前致谢。
编辑:根据要求,详细的 SSH 输出通过:
SVN_SSH="ssh -v " svn update svn+ssh://<USER_NAME>@<SVN_HOST>/<PATH_TO_REPO> <DEST_PATH>
Run Code Online (Sandbox Code Playgroud)
结果是:
OpenSSH_5.9p1 Debian-5ubuntu1, OpenSSL 1.0.1 14 Mar 2012
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to <SVN_HOST> [<SVN_HOST>] port 22.
debug1: Connection established.
debug1: permanently_set_uid: 0/0
debug1: identity file /root/.ssh/id_rsa type -1
debug1: identity file /root/.ssh/id_rsa-cert type -1
debug1: identity file /root/.ssh/id_dsa type -1 …Run Code Online (Sandbox Code Playgroud) 想不通——我对我们的服务器(大约 400 个 Linux 和 UNIX 服务器)使用了基于 id_rsa 密钥的身份验证。
在这种情况下,为了讨论,我有 3 个相同的服务器,最近安装了 3 个 Ubuntu 12.04 - svr1 svr2 svr3。
它们是 IBM 刀片服务器,因此我可以登录远程控制台。
对于 svr1,我可以使用我的 rsa 密钥很好地 ssh - 从客户端使用 ssh -vvv 看起来像这样:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/mbubb/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-rsa blen 279
Run Code Online (Sandbox Code Playgroud)
和环境变量设置,我在......
但是对于 svr2(和 3),它看起来像这样:
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering …Run Code Online (Sandbox Code Playgroud) 是否可以使用 CloudInit 的 #cloud-config 文件为多个用户添加 ssh 授权密钥?
我正在尝试使用 CloudInit 初始化从 Amazon Linux AMI 创建的新 EC2 实例。我可以使用以下方法将自定义 ssh 授权公钥添加到 ec2-user 帐户:
#cloud-config
ssh_authorized_keys:
- ssh-rsa AAAAB3NzaC1yc2EAAA...
Run Code Online (Sandbox Code Playgroud)
我真正想做的是创建几个新用户并为每个用户添加一个单独的公钥。是否可以使用标准的 cloud-config 指令来做到这一点,或者我只需要编写一个自定义的 shell 脚本来做到这一点?
我在 user 下有MASTER密钥alexus,但每当尝试以 root 和/或盒子上的其他用户身份通过 ssh 进行 sshsudo并收到错误时Bad owner or permissions on /root/.ssh/config
[root@wcmisdlin02 ~]# ls -ld .ssh
lrwxrwxrwx. 1 root root 17 May 14 13:00 .ssh -> /home/alexus/.ssh
[root@wcmisdlin02 ~]# ll .ssh/config
-rw-------. 1 alexus alexus 215 Feb 4 12:47 .ssh/config
[root@wcmisdlin02 ~]# ssh XXXXX
Bad owner or permissions on /root/.ssh/config
[root@wcmisdlin02 ~]#
Run Code Online (Sandbox Code Playgroud)
这是以前的工作,我最近重建了我的系统并试图让它工作,但无法弄清楚缺少什么(
[root@wcmisdlin02 ~]# getenforce
Permissive
[root@wcmisdlin02 ~]#
Run Code Online (Sandbox Code Playgroud)
请指教。
我刚刚第一次创建了一个虚拟服务器(或者,用 Digital Ocean 主机的语言来说,一个“小滴”)。Digital Ocean 有一个关于 SSH 密钥的说明页面https://www.digitalocean.com/ssh_keys 告诉我们检查 SSH 密钥是否存在,然后它给出了生成新 SSH 密钥然后添加它们的说明。就我而言,使用说明给出的命令,我发现我已经有了 SSH 密钥(我猜是我在注册 github 或 heroku 时生成的)
问题
1) 我应该重用我已经拥有的 SSH 密钥还是生成新的密钥(即它们必须是我使用它们的服务所独有的)?
2) 说明(复制如下)讲的是将 SSH 密钥添加到数字海洋,然后创建服务器。就我而言,我在添加 SSH 密钥之前创建了服务器。这会产生任何我应该注意的问题吗?我应该销毁服务器(还没有安装任何东西)并在适当的时候创建一个添加 SSH 密钥的新服务器吗?
指示
You can add SSH keys to DigitalOcean which can then be selected during the droplet create process to add the selected SSH keys under the root user.
When using SSH keys a root password will no longer be set as SSH keys will be used as …Run Code Online (Sandbox Code Playgroud) 我有一种情况,我需要使用两个不同的 SSH 密钥访问同一个 SSH 主机 (GitHub)。这没问题,我可以通过为主机名设置别名来轻松设置它。当此配置与我的 SSH 多路复用配置结合时,问题就来了。我似乎无法使用特定于主机的声明覆盖我的默认 ControlPath。
也许这只是它的工作方式?也许这是一个错误?难道我做错了什么?
顺便说一下,我使用的是 Mac 10.7。
这是我的配置:
Host *
ControlMaster auto
ControlPath ~/.ssh/connections/ssh-%r@%h:%p
Host github.com-X
TCPKeepAlive yes
ServerAliveInterval 60
ControlPersist 1h
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_X
IdentitiesOnly yes
ControlPath ~/.ssh/connections/ssh-%r@%h-X:%p
Host github.com
TCPKeepAlive yes
ServerAliveInterval 60
ControlPersist 1h
Run Code Online (Sandbox Code Playgroud)
我稍微修改了一下,但似乎我总是得到 Host * 声明中指定的 ControlPath。
ssh -T git@github.com-X
Run Code Online (Sandbox Code Playgroud)
使用 id_rsa_X 以正确的用户身份登录我,但它会在此处创建域套接字:
~/.ssh/connections/ssh-git@github.com:22
Run Code Online (Sandbox Code Playgroud)
而不是:
~/.ssh/connections/ssh-git@github.com-X:22
Run Code Online (Sandbox Code Playgroud)
所以稍后当我尝试使用 id_rsa 发出 SSH 命令时,由于连接多路复用,我得到了 id_rsa_X 用户。换句话说:
ssh -T git@github.com
Run Code Online (Sandbox Code Playgroud)
为密钥为 id_rsa_X 的用户给我一条问候消息。
有任何想法吗?
编辑:对 vgoff 评论的回应——不,它似乎正在阅读我的所有配置......
$ ssh -vT …Run Code Online (Sandbox Code Playgroud) 对于 ssh,我通常会添加密钥,/etc/ssh/keys-root/authorized_keys以便我无需输入密码即可登录。我最近发现了一些使用 dropbear ssh 而不是 ssh/openssh 的系统。dropbear 是否有与authorized_keys 等效的东西?有没有办法为dropbear添加授权密钥?
我试图找出在尝试通过 ssh 连接到生产主机时使用的 SSH 机制。我看到 SSH 客户端可以在可用模式中进行选择。但我不确定选择哪种模式以及如何选择。
SSHServer 端sshd_config配置为:
UsePAM yes
PasswordAuthentication yes
GSSAPIAuthentication yes
KerberosAuthentication no
KerberosOrLocalPassword no
Run Code Online (Sandbox Code Playgroud)
我想知道身份验证是使用基于 kerberos 还是基于 ssh_key。