はじめに
この投稿では、いくつかの便利な ssh コマンドと scp コマンドを例とともに学習します。 SSH は、Linux システムのリモート セッションを安全に取得するために使用されるクライアント側のコマンド ツールである Secure Shell を表すプロトコルです。対称および非対称暗号化方式を使用して、ネットワーク経由でデータを転送します。 SSH は、任意のサーバーに接続する最も安全な方法であるため、サーバーのリモート セッションを取得するための強く推奨されるツールです。 SSH は、以前使用されていた telnet などの安全でないリモート ツールに取って代わるものです。 SSH のポート番号は 22 です。SSH のバージョンは、SSH-1 とも呼ばれる SSH プロトコル バージョン 1 と SSH プロトコル バージョン 2 です。 および SSH-2 . SSH-1 と SSH-2 の違いは、SSH-1 がサポートしていないのに対し、SSH-2 は公開鍵証明書をサポートしていることです。
scp は、ある Linux システムから別の Linux システムにネットワーク経由で安全にデータをコピーするために使用されるコマンド ライン ユーティリティです。 SSH と同様に、SCP もポート番号 22 を使用してネットワーク経由でデータを接続および転送します。 SCP は、FTP や Telnet などのセキュリティで保護されていないデータ転送プロトコルに対する優れた代替ツールであり、推奨されるツールです。また、SSH プロトコルを使用してデータを安全に転送するため、ネットワーク経由でデータを転送する際に非常に安全です。
それでは、いくつかの重要な ssh コマンドと scp コマンドを例とともに見てみましょう。
私のテスト環境には 2 つの Linux システム、つまり pc1 と pc2 があります。システムの詳細は以下を参照してください。
テスト環境のシナリオ:
PC1 :
Computer Name – pc1 IP Address – 192.168.0.105
PC2 :
Computer Name – pc2 IP Address – 192.168.0.106
1. ssh コマンドを使用して PC1 から PC2 をリモートにします
ssh が他の Linux システムのリモート コンソールを安全に取得するために使用されることは周知のとおりです。それでは、以下の ssh コマンドを使用して、pc1 から pc2 のリモート コンソールを取得しましょう。
構文 :
# ssh username@IP Address of the Remote Computer
[root@pc1 ~]# ssh [email protected] # Take Remote of PC2 from PC1 [email protected]'s password: Last login: Thu Mar 9 09:14:34 2017 from 192.168.0.107
リモートが正常に取得されました。以下に示すように、リモート システムのホスト名と IP アドレスを確認してください。
[root@pc2 ~]# hostname pc2 [root@pc2 ~]# ifconfig eth0 Link encap:Ethernet HWaddr 00:0C:29:01:77:E7 inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe01:77e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9688 errors:0 dropped:0 overruns:0 frame:0 TX packets:4695 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11157837 (10.6 MiB) TX bytes:370245 (361.5 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:16 errors:0 dropped:0 overruns:0 frame:0 TX packets:16 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:960 (960.0 b) TX bytes:960 (960.0 b)
2.現在ログインしているユーザー名でシステムのリモート コンソールを取得
現在ログインしているユーザー名でシステムのリモート コンソールを取得できます。たとえば、ここで pc1 ではユーザー名「root」を使用してログインし、同じユーザー名 (つまり「root」) を使用して pc2 マシンのリモート セッションを取得したい場合は、以下のコマンドを使用できます。
[root@pc1 ~]# ssh 192.168.0.106 # Take Remote using currently logged in username [email protected]'s password: Last login: Thu Mar 9 09:08:54 2017 from 192.168.0.107 [root@pc2 ~]# hostname pc2
3.リモート コンソールからログアウト
すでに使用されているリモート コンソールからログアウトするには、logout コマンドを使用します。以下の出力例を参照してください。
[root@pc2 ~]# logout # Logout from already taken remote console Connection to 192.168.0.106 closed.
4.インストールされている ssh パッケージのバージョンを確認してください
現在インストールされている ssh パッケージのバージョンを確認するには、オプション -V を指定して ssh コマンドを使用します .以下の出力例を参照してください。
[root@pc1 ~]# ssh -V # check the currently installed ssh package version OpenSSH_5.3p1, OpenSSL 1.0.1e-fips 11 Feb 2013
5. scp コマンドを使用して、ある Linux システムから別の Linux システムにネットワーク経由でデータをコピーします
ある Linux システムから別の Linux システムにデータをコピーするには、scp コマンドを使用できます。ここでデータをコピーしています。つまり、touch.txt です。 ファイルを pc1 から pc2 に転送します。以下の出力例を参照してください。
[root@pc1 ~]# touch text.txt # Create a Sample text File [root@pc1 ~]# ls anaconda-ks.cfg Documents install.log.syslog Public Videos data Downloads Music Templates Desktop install.log Pictures text.txt [root@pc1 ~]# scp text.txt [email protected]:/root/Desktop/ # Copy data from Local System to Remote System [email protected]'s password: text.txt 100% 0 0.0KB/s 00:00
6. SCP コマンドを使用してリモート システムからデータをダウンロード/コピー
リモート システムからローカル システムにデータをコピーするには、以下のコマンドを使用できます。ここでは、pc2 から pc1 にデータをコピーしています。
[root@pc1 ~]# scp [email protected]:/data/database.txt /root/ # Copy Data from Remote System to Local using scp Command [email protected]'s password: database.txt 100% 0 0.0KB/s 00:00 [root@pc1 ~]# ls anaconda-ks.cfg Desktop install.log Pictures text.txt data Documents install.log.syslog Public Videos database.txt Downloads Music Templates
7.リモート システムからローカル システムにデータを再帰的にコピー
すべてのコンテンツを含むディレクトリを再帰的にコピーするには、オプション -r を指定して scp コマンドを使用できます .以下のサンプル出力を参照してください。ここでは、ディレクトリ (データ) をリモート システム (pc2) からローカル システム (pc1) にコピーしています。
[root@pc1 ~]# scp -r [email protected]:/data /root/Desktop/ # Copy directory Recursively [email protected]'s password: database.txt 100% 0 0.0KB/s 00:00 [root@pc1 ~]# cd /root/Desktop/ [root@pc1 Desktop]# ls data [root@pc1 Desktop]# ls data/ database.txt [root@pc1 Desktop]#
8. scp コマンドを使用して、ローカル システムからリモート システムにデータを再帰的にコピーします
すべてのコンテンツを含むディレクトリをローカル システムからリモート システムに再帰的にコピーするには、オプション -r を指定して scp コマンドを使用できます。 .以下の出力例を参照してください。
[root@pc1 ~]# ls apps/ test1.txt test2.txt test3.txt test4.txt test5.txt [root@pc1 ~]# scp -r apps/ [email protected]:/root # Copy directory Recursively from Local System to Remote System [email protected]'s password: test2.txt 100% 0 0.0KB/s 00:00 test1.txt 100% 0 0.0KB/s 00:00 test4.txt 100% 0 0.0KB/s 00:00 test5.txt 100% 0 0.0KB/s 00:00 test3.txt 100% 0 0.0KB/s 00:00
9. SSH コマンドを使用してリモート システムに接続し、同時にコマンドを実行する
サーバーのリモート セッションを取得し、コマンドを同時に実行できます。たとえば、ここではシステム pc2 のリモートを取得し、コマンド、つまり ifconfig を実行しています。以下の出力例を参照してください。
[root@pc1 ~]# ssh 192.168.0.106 "ifconfig" # take remote and run a command simultaneously [email protected]'s password: eth0 Link encap:Ethernet HWaddr 00:0C:29:01:77:E7 inet addr:192.168.0.106 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe01:77e7/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:9870 errors:0 dropped:0 overruns:0 frame:0 TX packets:4845 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:11182999 (10.6 MiB) TX bytes:393576 (384.3 KiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:18 errors:0 dropped:0 overruns:0 frame:0 TX packets:18 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1058 (1.0 KiB) TX bytes:1058 (1.0 KiB)
10. ssh コマンドを使用して別のユーザー名でシステムのリモートを取る
別のユーザー名でシステムをリモートにするには、オプション -l を指定して ssh コマンドを使用できます .以下の出力を参照してください。
[root@pc1 Desktop]# ssh -l root 192.168.0.106 # Take remote using different username [email protected]'s password: Last login: Fri Mar 10 08:54:59 2017 from 192.168.0.107
11. scp コマンドを使用して隠しファイルとディレクトリをコピーします。
隠しファイルとディレクトリをコピーするには、オプション -rp を指定して ssh コマンドを使用できます . scp コマンドを使用して隠しファイルとディレクトリをコピーするときは、常に . を入れることに注意してください。 (ドット) をパスの末尾に追加します。例:「scp -rp /root/.」.
[root@pc1 ~]# scp -rp /root/. [email protected]:/hidden # Copy hidden files and directories using scp command [email protected]'s password: .gtk-bookmarks 100% 107 0.1KB/s 00:00 .bashrc 100% 176 0.2KB/s 00:00 .bash_logout 100% 18 0.0KB/s 00:00 .bash_profile 100% 176 0.2KB/s 00:00 database.txt 100% 0 0.0KB/s 00:00 .bash_history 100% 3327 3.3KB/s 00:00 database.txt 100% 0 0.0KB/s 00:00 profiles.ini 100% 104 0.1KB/s 00:00 . . . home-2f9509b7.log 100% 32KB 32.0KB/s 00:00 addressbook.db 100% 12KB 12.0KB/s 00:00 addressbook.db.summary 100% 86 0.1KB/s 00:00 .ICEauthority 100% 1244 1.2KB/s 00:00 [root@pc1 ~]# ssh 192.168.0.106 [email protected]'s password: Last login: Fri Mar 10 08:56:14 2017 from 192.168.0.107 [root@pc2 ~]# ls -a /hidden/ . data .gnote Pictures .. database.txt .gnupg Public anaconda-ks.cfg .dbus .gtk-bookmarks .pulse apps Desktop .gvfs .pulse-cookie .bash_history Documents .ICEauthority .ssh .bash_logout Downloads install.log .tcshrc .bash_profile .esd_auth install.log.syslog Templates .bashrc .gconf .local text.txt .cache .gconfd .mozilla Videos .config .gnome2 Music .cshrc .gnome2_private .nautilus