使用命令行选项禁用SSHAgent

gue*_*tli 4 ssh batch-processing

如何通过命令行选项告诉ssh不使用SSH-Agent?

ssh -a做一些不同的事情。它不转发代理,而是使用它。

我阅读了手册页,但找不到解决方案。

取消设置SSH_AUTH_SOCK会起作用,但是在我的上下文中,命令行选项会更好。

Mic*_*urr 20

我知道这是一个老问题,但正确的答案是“如何使用命令行选项告诉 ssh 不使用 SSH 代理?” 尚未给出:

  • 使用该-o IdentityAgent=none选项

来自https://man7.org/linux/man-pages/man5/ssh_config.5.html(添加了重点):

身份代理

指定用于与身份验证代理通信的 UNIX 域套接字。

此选项覆盖 SSH_AUTH_SOCK 环境变量,可用于选择特定代理。将套接字名称设置为 none 将禁用身份验证代理。...


dam*_*ois 6

您可以强制ssh使用SSH密钥以外的其他任何方式(例如密码)进行身份验证

ssh -o PubkeyAuthentication=no ...
Run Code Online (Sandbox Code Playgroud)

这种方式当然会使代理无效。如果要使用密钥,还可以显式指定它,并且ssh仅使用该密钥,而不使用代理中的所有密钥:

ssh -i path/to/id_rsa -o IdentitiesOnly=yes ...
Run Code Online (Sandbox Code Playgroud)

你提到过SSH_AUTH_SOCK。您可以ssh像这样在命令上下文中取消设置它:

SSH_AUTH_SOCK= ssh ...
Run Code Online (Sandbox Code Playgroud)

注意后面的空格SSH_AUTH_SOCK=。这样,您可以确保在不修改您的工作环境的同时不使用该代理。

  • 谢谢:`-o IdentitiesOnly=yes` 满足我的需求。谢谢 (3认同)
  • 对我来说,“-o IdentitiesOnly=yes”还不够,因为正在使用其他一些身份文件。我还添加了 `-F /dev/null` 来没有其他配置。 (3认同)