リモートサーバーにSSHで接続し、すぐにディレクトリにcdしたいという状況になったことはありますか?はい?さて、あなたは正しい軌道に乗っています!この簡単なチュートリアルでは、Linux上の特定のディレクトリに直接SSHで接続する方法について説明します。意味-SSH経由でリモートシステムにログインすると、特定のディレクトリに自動的に変更できます。特定のディレクトリにSSHで接続するだけでなく、SSH経由でリモートサーバーに接続した直後に任意のコマンドを実行することもできます。
リモートLinuxシステムの特定のディレクトリへのSSH
この方法を知る前は、通常、次のコマンドを使用してリモートリモートシステムにSSHで接続していました。
$ ssh [email protected]
次に、次のようなディレクトリにCDを挿入します。
$ cd <some-directory>
それが私がリモートシステムのディレクトリに変更する方法です。もう違います! 2つの別々のコマンドを使用する必要はありません!!
たとえば、次のコマンドを使用すると、リモートシステム(192.168.225.52)にSSHで接続し、「dir1」というディレクトリに自動的にcdできます。
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; bash'
上記のコマンドは、リモートシステム(192.168.225.52)にSSHで接続し、すぐに'/ home / ostechnix / dir1'という名前のディレクトリにcdします。 ディレクトリを作成し、最後にリモートシステムのシェルに移動します。
ここで、 -t フラグは、対話型シェルに必要な疑似端末の割り当てを強制するために使用されます。このフラグを指定しない場合、プロンプトは表示されません。また、 "bash"を追加しない場合も 上記のコマンドを終了すると、接続が終了し、ローカルシステムに制御が戻ります。
上記のコマンドの出力例は次のとおりです。
特定のディレクトリにSSHで接続するためのコマンドの例をさらにいくつか示します。
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; bash --login'
ここで、-ログイン フラグは「bash」をログインシェルとして設定します。
または、
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 ; exec bash'
または、
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && exec bash -l'
ここで、 -l </ strong> フラグは「bash」をログインシェルとして設定します。
上記の例では、 bashについて明示的に言及しました。 ログインシェルとして。なぜなら、Bashが私のリモートシステムのデフォルトシェルであることを私は知っているからです。リモートシステムのシェルタイプがわからない場合は、次のコマンドを使用します。
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && exec $SHELL'
リモートシステムにディレクトリを作成し、自動的にSSHで接続します
リモートシステムに存在しないディレクトリにSSHで接続しようとすると、認証が成功すると次のメッセージが表示されます。
bash: line 0: cd: /home/ostechnix/dir2: No such file or directory
ご覧のとおり、「dir2」という名前のディレクトリはリモートシステムでは使用できません。リモートシステムにディレクトリを作成し、SSH経由で自動的にそのディレクトリにcdする場合は、ローカルシステムから次のコマンドを実行するだけです。
$ ssh -t [email protected] 'mkdir -p dir2 ; cd /home/ostechnix/dir2 ; bash --login'
変更を永続的にする
上記のコマンドを毎回手動で入力したくない場合は、リモートシステムの〜/ .bashrc 上のSSHサーバーに接続した後に実行するコマンドを追加するだけです。 または〜/ .bash_profile または〜/ .profile ファイル。
bashrcを編集します ファイル:
$ nano ~/.bashrc
コマンドを1つずつ追加します。私の場合、次の行を追加しています:
cd /home/ostechnix/dir1 >& /dev/null
この行をリモートシステムの.bash_profileに追加する必要があることに注意してください または.bashrc または.profile ローカルシステムではなく、ファイル。 Ctrl + Oを押します Enterキーを押して保存し、 Ctrl + Xを押します。 ファイルを閉じます。
最後に、次のコマンドを実行して変更を更新します。
$ source ~/.bashrc
これ以降、(SSHまたは直接のいずれかで)ログインするたびに、cdコマンドが実行され、「/ home / ostechnix/dir1」ディレクトリ内に自動的に移動します。
リモートLinuxシステムでSSH経由でコマンドを実行する
すでに述べたように、このトリックは、リモートシステムに接続した後にディレクトリにcdするだけではありません。このメソッドを使用して、他のコマンドを実行することもできます。
たとえば、次のコマンドを実行すると、「/ home / ostechnix / dir1」ディレクトリに移動し、「uname-a」コマンドを実行します。
$ ssh -t [email protected] 'cd /home/ostechnix/dir1 && uname -a && exec $SHELL'
リモートシステムでSSHを介してコマンドを実行するその他の例は、次のガイドに記載されています。
- SSH経由でリモートLinuxシステムでコマンドを実行
これがお役に立てば幸いです。
関連記事:
- 1つのコマンドでcdとlsを実行する方法
- 1つのコマンドでcpまたはmvとcdを実行する方法
- Linuxで特定のユーザーまたはグループへのSSHアクセスを許可または拒否する