GNU/Linux >> Linux の 問題 >  >> Linux

11 Linux で便利な「ssh」および「scp」コマンド

はじめに

この投稿では、いくつかの便利な 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


Linux
  1. Linuxコマンド-概要と例

  2. Linuxで役立つ10個のYUMコマンド

  3. Linuxのrebootおよびshutdownコマンド

  1. Linuxでシャットダウンおよび再起動コマンドを無効にする方法

  2. Linuxでの「su」コマンドと「su-」コマンドの違いを学ぶ

  3. Linuxコマンド:jobs、bg、およびfg

  1. WindowsとLinuxの間にSSH接続を確立します

  2. Linuxシステムで最も役立つNginxコマンド

  3. 「ifconfig」コマンドと「ip」コマンドの違い