忽略 .ssh/rc 文件?

忽略 .ssh/rc 文件?

我有一个远程服务器,其中有一个 ~/.ssh/rc 文件。每次我 ssh 进入该服务器时,它都会运行该文件,然后将我放入远程 shell 中。通常这就是我想要的。有时我不想要这个。

当我 ssh 时是否可以提供一个选项,以便它不会执行 ~/.ssh/rc?

答案1

客户端无法执行此操作。这是一项安全功能:该~/.ssh/rc文件可能会执行客户端无法绕过的操作(尽管这不是常见用途)。

绕过任何操作~/.ssh/rc的最明显方法是将其包装在依赖于环境变量的代码中,并允许客户端将此环境变量传递给服务器(AcceptEnv中的指令/etc/sshd_config)。

从服务器端执行此操作的另一种方法是no-user-rc使用带有参数的键

答案2

ssh在简要扫描了手册和手册后,我能看到的唯一方法是,sshd将此文件不是通过更改 SSH 来执行客户是通过使用单独的密钥与主机进行身份验证。

~/.ssh/rc可以通过no-user-rc~/.ssh/authorized_keys文件中设置用户可以使用的特定键的选项来禁用的执行。

该文件通常可能如下所示:

ssh-ed25519 AAAASOMEKEYSIGNATUREHERE myself@somehost

这可以通过sshd手册中描述的选项进行补充:

no-user-rc ssh-ed25519 AAAASOMEKEYSIGNATUREHERE myself@somehost

然后可以添加另一个不同的键,以便何时rc执行该文件:

no-user-rc ssh-ed25519 AAAASOMEKEYSIGNATUREHERE myself@somehost
ssh-ed25519 AAAASOMEDIFFERENTKEYSIGNATUREHERE myself@somehost

在本地,您可以根据您是否想要执行该rc文件来使用单独的键进行连接,可能通过使用以下配置~/.ssh/config

Host myhost
    Hostname theremote.host
    User myself
    IdentityFile %d/.ssh/id_ed25519

Host myhost-norc
    Hostname theremote.host
    User myself
    IdentityFile %d/.ssh/id_ed25519-norc

其中调号的签名与调号签名~/.ssh/id_ed25519-norc相匹配no-user-rc

虽然这看起来相当复杂,但老实说,我根本找不到任何其他方法来避免执行该rc文件。另一种选择是,正如吉尔斯建议的那样,让rc文件绕过基于某些环境变量正在执行的任何操作,而是/etc/ssh/sshrc像通常在文件不存在时执行的那样调用rcsshd手册说如果/etc/ssh/sshrc也不存在,则xauth使用 then ,请参阅sshd手册以了解更多信息信息)。

相关内容