ssh如何与自身连接?

Noo*_*oob 6 linux ssh

我正在尝试linux ssh。在终端中,我尝试连接我正在使用的同一台 Linux 机器,并且它已连接!就像用您的手机拨打同一部电话一样!但这怎么可能呢?

以下是我输入的示例终端命令:

alpha@alpha:~$ ssh alpha@<my IP address>
alpha@<my IP address>'s password: <my password>

Welcome to Ubuntu 18.04.1 LTS (GNU/Linux 4.15.0-42-generic x86_64)

* Documentation:  https://help.ubuntu.com
* Management:     https://landscape.canonical.com
* Support:        https://ubuntu.com/advantage


* Canonical Livepatch is available for installation.
 - Reduce system reboots and improve kernel security. Activate at:
   https://ubuntu.com/livepatch

0 packages can be updated.
0 updates are security updates.

Last login: Mon Dec 10 15:31:35 2018 from <my IP address>
Run Code Online (Sandbox Code Playgroud)

上面的终端与我使用 ssh 的 Linux 机器的 IP 地址和上面的终端输出相同。我还注意到,我可以在嵌套连接中使用 ssh 与同一台机器连接,并且我尝试了 5 级深度!

出于好奇,我问这个问题是为了知道这是正确的吗?linux 不能检测到它自言自语吗?

Luc*_*ini 1

在 Linux 中,您所做的每个连接通常最后都在 bash 上运行,对于其他 UNIX,则使用其他 shell(以及其他初始化脚本)

因此,您可以使用当前的 shell 初始化脚本,通过读取ssh 客户端会话生成的环境变量来配置 ssh 客户端的连接行为。

例如,在 /etc/bash.bashrc 中,类似的内容可能会阻止您连接到自己。

CNIP=$(echo $SSH_CONNECTION | cut -d' ' -f1)
RNIP=$(echo $SSH_CONNECTION | cut -d' ' -f3)

if [ "$CNIP" == "$RNIP" ] && [ "$CNIP" != "" ] ; then
    echo "We are connecting to ourself, exiting.." 
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

所以在 Linux 中,用这个你可能会阻止 ssh 允许服务器 ip 本身的连接。

Linux/Unix 是非常可定制的,它可能允许你做一切事情,包括用无限循环破坏你的系统,如果你真的想要的话。因此,如果你想防止某些事情发生,你需要更加明确。

另一方面,我没有看到这种行为有任何问题,我无法确定你为什么担心它,但如果你真的想出于任何原因阻止,这里可能有一个解决方案。