これらのLinuxコマンドを使用してリモートSSH接続を効率的に管理する

1つ以上のリモートサーバーを実行している場合、通常は1日を通して常にログインすることに時間を費やしています。

しかし、それはこのようである必要はありません。エイリアスのみを使用してSSH経由で効率的にログインし、単一のファイルまたはディレクトリを転送し、リモートSSHコマンドを実行し、リモートサーバーをローカルディレクトリに簡単にマウントする方法を学びました。

SSH構成ファイル

時間を大幅に節約できるのは、 〜/ .ssh / configにあるSSH構成ファイルです。次のコマンドを使用してサーバーへのログインに使用するすべてのSSHキーを格納するディレクトリを作成することから始めます。

 mkdir -m 0600 $HOME/.ssh_keys

次に、すべてのSSHキーファイルをこのディレクトリにコピーします(例:clienta.pem、clientb.pemなど)。次に、次のコマンドを実行して、テキストエディタで〜/ .ssh / configファイルを開きます。

 nano ~/.ssh/config

以下は、リモートサーバーとのSSH接続を確立するエントリの例です。

 host clienta
 hostname 124.58.2276.80
 user ubuntu
 IdentityFile ~/.ssh_keys/clienta.pem

上記のような行のセクションを〜/ .ssh / configファイルに追加します(必要なサーバーごとに1つ)。次に、 Ctrl + Xを押してファイルを保存して閉じ、プロンプトに従います。保存したら、次の簡単なコマンドを使用して、ターミナル内の任意のディレクトリからSSH経由で任意のサーバーにログインできます。

 ssh clienta

これにより、 〜/ .ssh / configファイル内で指定したclientaホストの下の情報を使用してサーバーに即座にログインします。

Scp / Rcpでファイルを転送する

永続的なログインセッションを作成せずに、次のようなscpコマンドを使用して単一のファイルまたはディレクトリをリモートサーバーに簡単にアップロードできます。

 scp report.pdf clienta:~/

上記のコマンドは、report.pdfファイルをローカルコンピューターから上記のセクションで定義したclientaサーバーのホームディレクトリにアップロードします。次のようなホームディレクトリ以外のディレクトリにアップロードできます。

 scp about.html clienta:/home/clienta/public_html

上記は、about.htmlファイルをリモートclientaサーバーの/ home / client / public_htmlディレクトリにアップロードします。次のような-rオプションを使用して、ディレクトリ全体をアップロードすることもできます。

 scp -r Documents clienta:~/docs

これにより、 〜/ Documentsディレクトリ全体がローカルコンピュータからリモートサーバーの〜/ docsディレクトリにアップロードされます。

ファイルのダウンロード

同様に、次のようなrcpコマンドを使用して、永続的なログインセッションを作成せずに、ファイルまたはディレクトリをローカルコンピュータにダウンロードできます。

 rcp clienta:~/public_html/about.html myproject/about.html

上記は、リモートclientaサーバーからpublic_html / about.htmlファイルをダウンロードし、ローカルコンピューターのprojects /about.htmlファイルに配置します。

リモートSSHコマンドを実行する

もう1つの簡単なヒントは、次のような永続的なログインセッションなしでリモートサーバー上で単一のLinuxコマンドを実行できることです。

 ssh clienta ls

上記は、リモートクライアントサーバーでlsコマンドを実行し、サーバーにログインしたままにせずにすべてのファイル/ディレクトリを一覧表示します。たとえば、サーバーを再起動する場合は、次を使用できます。

 ssh clienta /sbin/shutdown -rf now

ローカル/ binディレクトリ

ユーザーアカウントに対してローカルな/ bin /ディレクトリを作成して、リモートサーバーに簡単にマウントできるようにすることで、これを拡張してみましょう。コンピューターでターミナルを開き、次のコマンドを実行して/ bin /ディレクトリを作成します。

 mkdir -m 0755 ~/bin

次に、次のコマンドを使用して、テキストエディタ〜/ .profileファイルを開きます。

 nano $HOME/.profile

ファイルの一番下までスクロールし、クリップボードにコピーして次の行を追加し、 Ctrl + Shift + Vを押してターミナル内に追加します。

 if [ -d "$HOME/bin" ] ; then
 PATH="$HOME/bin:$PATH"
 fi

Ctrl + Xを押してファイルを保存して閉じ、プロンプトに従います。これにより、 .profileファイルが保存され、実行しようとしているコマンドがないか、新しく作成されたローカル/ bin /ディレクトリがチェックされます。

リモートマウントコマンドの追加

まず、次のコマンドを使用して、 sshfsがコンピューターにインストールされているかどうかを確認します。

 sshfs --version

これで現在のバージョンのsshfsが出力されれば、準備完了です。そうしないと、「コマンドが見つかりません」というエラーが表示された場合、次のコマンドを使用してsshfsをインストールできます。

 sudo apt-get -y install sshfs

次に、リモートサーバーにマウントされたすべてのディレクトリを含む/ mnt /ディレクトリを作成します。ターミナル内で次のようなコマンドを実行します。

 mkdir -m 0755 ~/mnt
 mkdir -m 0755 ~/mnt/clienta
 mkdir -m 0755 ~/mnt/clientb

マウントする可能性のあるリモートサーバーごとに1つのサブディレクトリを作成し続けます。次に、実行するシェルコマンドを作成しましょう。たとえば、 clientaサーバーの場合は、ターミナルで次のコマンドを実行してファイルを開きます。

 nano ~/bin/mount_clienta

必要に応じて以下の行を適切なサーバー情報で変更し、 Ctrl + Shift + Vを押して、ターミナル内の空白のテキストエディターにコピーして貼り付けます。

 #!/bin/bash
 sshfs -o IdentityFile=~/.ssh_keys/clienta.pem ubuntu@192.168.0.24:/var/www ~/mnt/clienta

Ctrl + Xを押してファイルを保存して閉じ、プロンプトに従ってファイルを閉じます。最後に、次のコマンドを実行して、ファイルのアクセス許可を変更して実行可能にします。

 chmod 0755 ~/bin/mount_clienta

これで、 clientaのリモートサーバーにマウントしてファイルを転送する必要があるときはいつでも、ターミナル内の任意のディレクトリから次のコマンドを実行できます。

 mount_clienta

これで、ローカルコンピュータの〜/ mnt / clientaにあるディレクトリが、リモートサーバーの/ var / wwwディレクトリにマウントされます。ローカルディレクトリと同じように、ディレクトリとの間でファイルのコピーを開始できます。必要な操作はリモートサーバーで実行されます。

より効率的な接続管理

上記のヒントが、リモートサーバーへの接続の管理を合理化し、より効率的にするのに役立つことを願っています。この記事では、エイリアスのみを使用してSSH経由でログインし、単一のファイル/ディレクトリを転送し、リモートSSHコマンドを実行し、ローカルディレクトリをリモートサーバーに簡単にマウントする方法を可能にする〜/ .ssh / configファイルについてすべて学びました。