如何在Linux上通过SSH进入特定目录

时间:2020-03-21 11:44:59  来源:igfitidea点击:

本简短的教程介绍了如何直接SSH到Linux上的特定目录。(SSH到远程服务器并立即CD到目录中)
这意味着当通过SSH登录到远程系统时,我们可以自动切换到特定目录。
通过SSH连接到远程服务器后,不仅可以将SSH到特定目录中,甚至可以立即运行任何命令。

SSH进入远程Linux系统的特定目录

在我知道这种方法之前,通常我会先使用以下命令将SSH SSH到远程远程系统:

$ssh Hyman@theitroad

然后cd进入如下目录:

$cd <some-directory>

这就是我切换到远程系统中的目录的方式。
不再!无需使用两个单独的命令!

例如,以下命令允许我通过SSH进入远程系统(192.168.225.52),并自动通过cd进入名为“ dir1”的目录:

$ssh -t Hyman@theitroad 'cd /home/theitroad/dir1 ; bash'

上面的命令将SSH到远程系统(192.168.225.52),并立即cd到名为'/home/theitroad/dir1'的目录,最后将我们留在远程系统的shell中。

在此,-t标志用于强制进行伪终端分配,这对于交互式shell来说是必需的。
如果不指定此标志,则不会出现提示。
而且,如果我们没有在上述命令的末尾添加“ bash”,则连接将终止,并将控制权返回给本地系统。

这是上述命令的示例输出:

以下是一些通过SSH进入特定目录的示例命令:

$ssh -t Hyman@theitroad 'cd /home/theitroad/dir1 ; bash --login'

其中--login标志将“ bash”设置为登录shell。

或者,

$ssh -t Hyman@theitroad 'cd /home/theitroad/dir1 ; exec bash'

或者,

$ssh -t Hyman@theitroad 'cd /home/theitroad/dir1 && exec bash -l'

在此,-l标志将“ bash”设置为登录shell程序。

在以上示例中,我明确提到了bash作为登录shell。
因为,我知道Bash是远程系统中的默认shell程序。
如果我们不知道远程系统上的shell程序类型,请使用以下命令:

$ssh -t Hyman@theitroad 'cd /home/theitroad/dir1 && exec $SHELL'

在远程系统上创建目录并自动通过SSH进入该目录

如果我们尝试通过SSH进入远程系统中不存在的目录,那么在成功进行身份验证后,我们会看到以下消息:

bash: line 0: cd: /home/theitroad/dir2: No such file or directory

如我们所见,名为“ dir2”的目录在远程系统中不可用。
如果要在远程系统中创建目录并通过SSH自动将其cd入该目录,只需在本地系统中运行以下命令:

$ssh -t Hyman@theitroad 'mkdir -p dir2 ; cd /home/theitroad/dir2 ; bash --login'

使更改永久生效

如果我们不想每次都手动键入上述命令,只需在连接到远程系统的~/.bashrc或者~/.bash_profile或者~/.profile上的SSH服务器后,添加要运行的命令即可。
文件。

编辑bashrc文件:

$nano ~/.bashrc

逐一添加命令。
就我而言,我要添加以下行:

cd /home/theitroad/dir1 >& /dev/null

请注意,我们应该将此行添加到远程系统的.bash_profile或者.bashrc或者.profile文件中,而不是在本地系统的文件中。
按Ctrl + O并按Enter以保存,然后按Ctrl + X关闭文件。

最后,运行以下命令以更新更改:

$source ~/.bashrc

从现在开始,无论何时登录(通过SSH或者直接登录),都会执行cd命令,并且我们将自动进入“/home/theitroad/dir1”目录。

在远程Linux系统上通过SSH执行命令

就像我已经说过的那样,这个技巧不只是连接到远程系统后进入目录的CD。
我们也可以使用此方法来运行其他命令。

例如,以下命令将使我们进入'/home/theitroad/dir1'目录,然后执行'uname -a'命令。

$ssh -t Hyman@theitroad 'cd /home/theitroad/dir1 && uname -a && exec $SHELL'