\r\n\r\n
1台以上のリモートサーバーを運用している場合、通常は1日中常時ログオンしている時間が必要になります。
でも、そんなことはないんです。エイリアスだけを使ったSSHによる効率的なログイン、個々のファイルやディレクトリの転送、リモートSSHコマンドの実行、リモートサーバーをローカルディレクトリに簡単にマウントする方法などを学ぶことができる時期がやってきました。
多くの時間を節約する方法の1つは、~/.SSH/configにあるSSH-configファイルです。まず、サーバーへのログインに使用するすべてのSSHキーを格納するディレクトリを、以下のコマンドで作成します。
mkdir -m 0600 $HOME/.ssh_keysここで、すべてのSSH鍵ファイルをこのディレクトリにコピーします(例.Client.pem、Client B.pemなど)。次に、以下のコマンドを実行して、テキストエディタで ~/.ssh/config ファイルを開きます。
nano ~/.ssh/config以下は、リモートサーバーへのSSH接続を確立するためのサンプルエントリーです。
host clienta hostname 124.58.2276.80 user ubuntu IdentityFile ~/.ssh_keys/clienta.pem上記のような行を、各サーバーごとに ~/.ssh/config ファイルに追加してください。その後、Ctrl+Xで保存して閉じ、プロンプトに従ってください。一度保存すれば、あとは以下のような簡単なコマンドで、端末内の任意のディレクトリからSSHで任意のサーバーにログインすることができます。
ssh clientaこれで、~/.ssh/config ファイルで指定したクライアントホストの下の情報を使って、すぐにサーバーにログインできます。
個々のファイルやディレクトリは、持続的なログインセッションを作成することなく、scpコマンドを使用して簡単にリモートサーバーにアップロードすることができます。
scp report.pdf clienta:~/上記のコマンドは、あなたのローカル・コンピュータから、前のセクションで定義したクライアント・サーバのホーム・ディレクトリーにreport.pdfファイルをアップロードします。ホームディレクトリ以外のディレクトリにアップロードすることも可能です(例)。
scp about.html clienta:/home/clienta/public_html上記により、about.htmlファイルがリモートクライアントサーバの/home/client/publicu htmlディレクトリにアップロードされます。ディレクトリ全体をアップロードするには、-r オプションを使用します。
scp -r Documents clienta:~/docsこれにより、ローカルコンピュータの ~/Documents ディレクトリ全体が、リモートサーバーの ~/docs ディレクトリにアップロードされます。
同様に、rcpコマンドを使えば、永続的なログインセッションを作らずに、ファイルやディレクトリをローカルコンピュータにダウンロードすることができます。
rcp clienta:~/public_html/about.html myproject/about.html上記により、公開されているWebページ/about.htmlファイルがダウンロードされ、ローカルコンピュータのプロジェクト/about.htmlに配置されます。
もう一つの簡単なコツは、持続的なログインセッションなしで、リモートサーバー上で単一のLinuxコマンドを実行できることです、例.
ssh clienta ls上記のコマンドは、リモートクライアント&サーバー上でlsコマンドを実行し、サーバーにログインしたまますべてのファイル/ディレクトリを一覧表示します。例えば、サーバーを再起動する場合は
ssh clienta /**in/shutdown -rf nowこれを拡張して、/bin/ディレクトリにローカルなユーザーアカウントを作成し、リモートサーバーに簡単にロードできるようにしましょう。パソコンで端末を開き、以下のコマンドを実行して、/bin/ディレクトリを作成します。
mkdir -m 0755 ~/bin次に、~/.profileファイルをテキストエディタで以下のコマンドで開いてください。
nano $HOME/.profileドキュメントの一番下までスクロールして、次の行をクリップボードにコピーし、Ctrl+Shift+Vキーを押してターミナルで追加してください。
if [ -d "$HOME/bin" ] ; then PATH="$HOME/bin:$PATH" fiCtrl+Xでファイルを保存して閉じ、画面の指示に従って操作してください。これで.profileファイルが保存され、新しく作成されたlocal/bin/ディレクトリで実行しようとするコマンドをチェックするようになります。
まず、以下のコマンドでsshfsがインストールされていることを確認します。
sshfs --versionこれで現在のsshfsのバージョンが表示されればOKです。その他、「command not found」エラーが出た場合は、以下のコマンドでsshfsをインストールすることができます。
sudo apt-get -y install sshfsここで、リモートサーバーにインストールされたすべてのディレクトリを含む/mnt/ディレクトリを作成し、ターミナルで次のコマンドを実行します。
mkdir -m 0755 ~/mnt mkdir -m 0755 ~/mnt/clienta mkdir -m 0755 ~/mnt/clientb先に進み、マウントする可能性のあるリモートサーバーごとにサブディレクトリを作成します。次に、実行するシェルコマンドを作成します。例えば、クライアントサーバーでは、ターミナルで以下のコマンドを実行して、ファイルを開きます。
nano ~/bin/mount_clienta以下の行を適切なサーバー情報に修正し、CTRL+Shift+Vキーを押してコピーし、ターミナル内の空白のテキストエディタに貼り付けます。
#!/bin/bash sshfs -o IdentityFile=~/.ssh_keys/clienta.pem [email protected]:/var/www ~/mnt/clientaCtrl+Xでファイルを保存し、画面の指示に従ってファイルを閉じます。最後に、以下のコマンドを実行して、ファイルのパーミッションを変更し、実行可能な状態にします。
chmod 0755 ~/bin/mount_clientaこれで、clientaでリモートサーバーにマウントしてファイル転送する必要があるときは、ターミナル上の任意のディレクトリから次のコマンドを実行するだけでよくなりました。
mount_clientaローカルコンピュータの ~/mnt/clienta にあるディレクトリが、リモートサーバの /var/www ディレクトリに読み込まれるようになります。他のローカルディレクトリと同様にディレクトリ内のファイルのコピーを開始し、リモートサーバー上で必要な操作を行うことができます。
上記のヒントは、リモートサーバー接続の管理を簡素化し、より効率的にするために役立つことを願っています。この記事では、エイリアスだけを使った ssh によるログイン、個々のファイル/ディレクトリの転送、リモート ssh コマンドの実行、そしてローカルディレクトリをリモートサーバーにマウントするのがいかに簡単であるかについて、 ~/.ssh/config ファイルについてすべてを学びました。