标签: ssh

SSH:防止在 ssh-agent 身份验证失败时询问密码

我正在编写一个脚本来循环浏览已知主机名的列表,以便找到一个可以使用我的 SSH 密钥进行身份验证的工作 SSH 服务器。

密钥已经加载了ssh-agentand ssh-add,因此如果我连接到知道我的密钥的工作远程主机,则不会提示密码,并且我无需任何交互即可成功连接。

事情是,当远程主机不知道我的密钥时,ssh会用密码提示我(它没有机会成功,因为如果可以的话,由于 ,它已经让我登录了ssh-agent)。我想防止这种行为并ssh在ssh-agent身份验证失败时中止。

我目前正在使用以下命令绕过大部分交互,但我无法阻止我刚刚描述的交互:

$ ssh -i ~/.ssh/id_rsa                      \
      -o UserKnownHostsFile=/dev/null       \
      -o KbdInteractiveAuthentication=no    \
      -o StrictHostKeyChecking=no           \
      -o PreferredAuthentications=publickey \
      -o ConnectTimeout=1                   \
      $host -n "whoami"
Run Code Online (Sandbox Code Playgroud)

感谢您的回答。

ssh passphrase ssh-agent

4
推荐指数
1
解决办法
348
查看次数

tail:inotify 无法使用,恢复为轮询:打开的文件太多

tail: inotify cannot be used, reverting to polling: Too many open files
Run Code Online (Sandbox Code Playgroud)

我在 Ubuntu (AWS ec2) 上运行 apache 和 tomcat 服务器。每当我尝试catalina.out跟踪 tomcat 时,我都会收到太多打开的文件。但是我可以使用 vi 查看它。

在互联网上搜索后,我尝试了以下命令:

lsof | awk '{ print $2; }' | sort -rn | uniq -c | sort -rn | head
Run Code Online (Sandbox Code Playgroud)

结果如下

 17 5650
 17 5178
 13 5972
 10 5976
 10 5974
  9 5977
  9 5975
  9 5973
  8 5978
  4 9
Run Code Online (Sandbox Code Playgroud)

当我运行 lsof 进程 ids 时:5650 是 bash,5178 又是 bash,其他人是 sshd、top 和 apache2。

为什么会有大量 …

ubuntu ssh tail top

4
推荐指数
1
解决办法
9492
查看次数

SSH 密钥对于它们所使用的服务是否必须是唯一的?

我刚刚第一次创建了一个虚拟服务器(或者,用 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)

ubuntu ssh ssh-keys

4
推荐指数
1
解决办法
186
查看次数

使用 ssh 在远程服务器上运行本地脚本而不必担心引号

所以我一直在远程服务器上运行本地脚本:

ssh user@server "`cat local-script.sh`"
Run Code Online (Sandbox Code Playgroud)

但是,今天我有一个包含单引号和双引号的脚本。这会导致脚本失败,因为 的输出cat local-script.sh用引号括起来。如果不修改脚本本身,有没有更好的方法来处理这个问题?

我认为这可能有效:

ssh user@server $(<local-script.sh)
Run Code Online (Sandbox Code Playgroud)

但似乎并没有做任何事情......

ssh bash

4
推荐指数
1
解决办法
5098
查看次数

是否可以将 shell 附加到现有的 ssh 隧道?

我有一些SSH tunnels自动连接/重新连接的设置Shimo。

有没有办法将 shell 访问连接到那些现有的隧道,如果是这样怎么办?或者我是否必须为 shell 访问建立一个新的 ssh 连接?

ssh shell

4
推荐指数
1
解决办法
131
查看次数

我的 SSH 日志中的这些条目是什么意思?

我最近注意到我的 SSH 日志中有来自未知 IP 地址的条目。我执行了grep提取所有不包含我自己的 IP 地址的全部内容。我收到了这个:

Jul 24 22:06:54 server1 sshd[8261]: Accepted publickey for root from xxx.xxx.xx.xxx port 39721 ssh2
Jul 25 04:06:50 server1 sshd[8233]: Accepted publickey for root from xxx.xxx.xx.xxx port 40800 ssh2
Jul 25 04:08:30 server1 sshd[8233]: Received disconnect from xxx.xxx.xx.xxx: 11: disconnected by user
Run Code Online (Sandbox Code Playgroud)

我有几个问题:

  • 前两行是成功登录还是尝试登录?
  • 第三行是否因成功或尝试登录而导致断开连接?
  • sshdPID后方括号中的四位数是 PID 吗?

我在专用服务器上运行 CentOS 5。我正在使用 OpenSSH。

linux ssh login logging centos

4
推荐指数
1
解决办法
2万
查看次数

启动 sshd:/etc/ssh/sshd_config:权限被拒绝

我在亚马逊云中运行 Centos 机器。突然间,我无法通过 ssh 进入它。幸运的是,正在运行的 R Studio 包括运行 BASH shell 的能力。所以,我在 /var/log/boot.log 中看到 sshd 无法启动。

当我从命令行运行它时,sudo service sshd start我收到一个错误Starting sshd: /etc/ssh/sshd_config: Permission denied。我试图将 sshd_config 权限设置为 644 或 600 - 但我得到了同样的错误。我也试过sudo su -然后开始服务。

而且这不是 shell 本身的限制:我可以毫无问题地启动 httpd。

我什至不知道还能尝试什么......

linux ssh amazon-web-services

4
推荐指数
2
解决办法
2万
查看次数

使用特定于主机的声明更改 ssh ControlPath

我有一种情况,我需要使用两个不同的 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 git github ssh-keys

4
推荐指数
1
解决办法
2589
查看次数

将身份验证密钥添加到 dropbear ssh?

对于 ssh,我通常会添加密钥,/etc/ssh/keys-root/authorized_keys以便我无需输入密码即可登录。我最近发现了一些使用 dropbear ssh 而不是 ssh/openssh 的系统。dropbear 是否有与authorized_keys 等效的东西?有没有办法为dropbear添加授权密钥?

ssh ssh-keys dropbear

4
推荐指数
2
解决办法
3万
查看次数

什么是用于设置密码提示间隔时间的 `sshd_config` 参数?

如果我尝试使用错误凭据登录sshd服务器,我会Access denied在大约 2 秒的暂停后收到回复。

有没有办法增加返回密码输入提示所需的时间?

请注意,我已经LoginGraceTime将值设置为20s.

security linux ssh

4
推荐指数
1
解决办法
753
查看次数