鱼 shell 新功能:"ssh: command not found "
Fish shell new function : "ssh: command not found "
我正在尝试创建一个将我连接到 ssh 服务器然后成为 su,然后 ssh 到另一个服务器的功能,所以我执行了以下操作:
function test
ssh -t testuser@server1 'sudo ssh -t testuser@server2'
end
当我执行它时出现以下错误ssh: command not found
但是当我直接在终端上执行它时,它没有任何问题。
这听起来像是服务器 1 上的路径问题。
在命令行中,如果您键入以下内容,您会看到什么?
ssh -t testuser@server1 sudo which ssh
如果 SSH 不在 root 的路径中,您可能需要指定完整路径,例如:
ssh -t testuser@server1 sudo /usr/bin/ssh testuser@server2
当然,您可能需要调整路径以匹配您的环境。
此外,如果您尝试从 server1 的 root 连接到 server2,您可以直接通过 ssh 连接到 root@server1 吗?如果是这样,您也许可以使用随 OpenSSH 7.3 添加的 "ProxyJump" 功能。这取决于以 root 身份远程登录的能力,这可能不是一个选项,具体取决于您的环境。
ssh -J root@server1 testuser@server2
当我将它们中的每一个添加到 fish 函数文件夹时,我的问题就解决了:
~/.config/fish/functions
我刚刚创建了一个名为 myfunction.fish 的文件,并在该文件中粘贴了函数定义:
function myfunction
ssh -t testuser@server1 'sudo ssh -t testuser@server2'
end
保存它,退出 fish,现在该功能是永久性的。
我正在尝试创建一个将我连接到 ssh 服务器然后成为 su,然后 ssh 到另一个服务器的功能,所以我执行了以下操作:
function test
ssh -t testuser@server1 'sudo ssh -t testuser@server2'
end
当我执行它时出现以下错误ssh: command not found
但是当我直接在终端上执行它时,它没有任何问题。
这听起来像是服务器 1 上的路径问题。
在命令行中,如果您键入以下内容,您会看到什么?
ssh -t testuser@server1 sudo which ssh
如果 SSH 不在 root 的路径中,您可能需要指定完整路径,例如:
ssh -t testuser@server1 sudo /usr/bin/ssh testuser@server2
当然,您可能需要调整路径以匹配您的环境。
此外,如果您尝试从 server1 的 root 连接到 server2,您可以直接通过 ssh 连接到 root@server1 吗?如果是这样,您也许可以使用随 OpenSSH 7.3 添加的 "ProxyJump" 功能。这取决于以 root 身份远程登录的能力,这可能不是一个选项,具体取决于您的环境。
ssh -J root@server1 testuser@server2
当我将它们中的每一个添加到 fish 函数文件夹时,我的问题就解决了:
~/.config/fish/functions
我刚刚创建了一个名为 myfunction.fish 的文件,并在该文件中粘贴了函数定义:
function myfunction
ssh -t testuser@server1 'sudo ssh -t testuser@server2'
end
保存它,退出 fish,现在该功能是永久性的。