\r\n\r\n

リモートのssh接続を効率的に管理するLinuxコマンドです。

sshとlinuxのコマンドでリモートサーバーを管理する時間を短縮する方法を紹介します...

1台以上のリモートサーバーを運用している場合、通常は1日中常時ログオンしている時間が必要になります。

でも、そんなことはないんです。エイリアスだけを使ったSSHによる効率的なログイン、個々のファイルやディレクトリの転送、リモート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/rcpを使ったファイル転送

個々のファイルやディレクトリは、持続的なログインセッションを作成することなく、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に配置されます。

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

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

ssh clienta ls

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

ssh clienta /**in/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ファイルが保存され、新しく作成された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/clienta

Ctrl+Xでファイルを保存し、画面の指示に従ってファイルを閉じます。最後に、以下のコマンドを実行して、ファイルのパーミッションを変更し、実行可能な状態にします。

chmod 0755 ~/bin/mount_clienta

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

mount_clienta

ローカルコンピュータの ~/mnt/clienta にあるディレクトリが、リモートサーバの /var/www ディレクトリに読み込まれるようになります。他のローカルディレクトリと同様にディレクトリ内のファイルのコピーを開始し、リモートサーバー上で必要な操作を行うことができます。

より効率的な接続管理

上記のヒントは、リモートサーバー接続の管理を簡素化し、より効率的にするために役立つことを願っています。この記事では、エイリアスだけを使った ssh によるログイン、個々のファイル/ディレクトリの転送、リモート ssh コマンドの実行、そしてローカルディレクトリをリモートサーバーにマウントするのがいかに簡単であるかについて、 ~/.ssh/config ファイルについてすべてを学びました。

  • 2021-03-28 06:44 に公開
  • 閲覧 ( 29 )
  • 分類:IT

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ