Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使SSH直接转到特定目录?_Ssh_Directory - Fatal编程技术网

如何使SSH直接转到特定目录?

如何使SSH直接转到特定目录?,ssh,directory,Ssh,Directory,当您执行“ssh第二台机器”时,您可以连接到主目录上的第二台机器 但通常我在路径很长的目录中的_机器上工作,我想连接到第二个_机器并立即移动到我的工作目录。所以每次我必须: ssh第二台机器 cd/very/long/path/to/directory/ 有没有办法让它自动化??(ssh自动转到所需的目录)这应该适合您 ssh -t second_machine "cd /very/long/path/to/directory/; bash" 假设您想要运行bash,如果需要,可以替换其他s

当您执行“ssh第二台机器”时,您可以连接到主目录上的第二台机器

但通常我在路径很长的目录中的_机器上工作,我想连接到第二个_机器并立即移动到我的工作目录。所以每次我必须:

ssh第二台机器
cd/very/long/path/to/directory/


有没有办法让它自动化??(ssh自动转到所需的目录)

这应该适合您

ssh  -t second_machine "cd /very/long/path/to/directory/; bash"

假设您想要运行bash,如果需要,可以替换其他shell。

您可以执行类似于我正在使用的shell的操作。制作一个别名,如下所示

alias ssh 'ssh -t \!* "cd $PWD; csh"'
(这里,csh也可以被bash取代)

这会将您直接带到另一台机器上的“当前”路径。 使用方法类似于[$]ssh某些机器
然而,我发现它工作得很慢。因此,我正在寻找一种替代方法。

要使其永久化,请在
~/.ssh/config
文件中使用
RemoteCommand
,例如

Host myhost
  HostName IP
  User ubuntu
  IdentityFile ~/.ssh/id_rsa
  RemoteCommand cd /path/to/directory; $SHELL -il
相关的:


这可能会在姐妹网站上得到更好的响应,另请参见:这符合规范!!谢谢:)这是因为:1)ssh在homedir中启动了一个shell。2) 该shell执行传递的命令。3) 第一个命令(shell命令,
cd
)更改该shell中的cwd。4) 第二个命令,
bash
启动一个新的shell,它从父进程(由ssh启动的原始shell)继承了
cwd
,必须有一种方法在运行初始shell之前直接告诉
ssh
,跳过许多步骤。这就解决了问题(和引号会导致
RemoteCommand
!)出现问题,但它仅在SSH 7.6之后才可用。