1. 程式人生 > >OpenSSH 管理遠端主機

OpenSSH 管理遠端主機

SSH 為 Secure Shell 的縮寫,是一種以安全的方式提供遠端登陸的協議,也是目前遠端管理Linux系統的首選方式,SSH由 IETF 的網路小組(Network Working Group)所制定,SSH為建立在應用層基礎上的安全協議,SSH是目前較可靠,專為遠端登入會話和其他網路服務提供安全性的協議.利用SSH協議可以有效防止遠端管理過程中的資訊洩露問題.

SSH最初是UNIX系統上的一個程式,後來又迅速擴充套件到其他操作平臺,SSH在正確使用時可彌補網路中的漏洞,SSH客戶端適用於多種平臺,幾乎所有UNIX平臺—包括HP-UX、Linux、AIX、Solaris、Digital、UNIX、Irix以及其他平臺,都可執行SSH.

常用sshd配置項

sshd是一款基於SSH協議開發的一款遠端管理服務程式,此工具不僅使用起來方便快捷,而且能夠提供兩種安全驗證方法,一種是:基於口令的驗證,另一種是:基於金鑰的驗證,兩種方法相比較推薦大家使用金鑰對驗證方法,其安全性最高.

sshd服務的配置檔案預設儲存在/etc/ssh/sshd_config檔案中,下面我們將介紹sshd_config配置檔案中的引數的意思吧.

vim /etc/ssh/sshd_config

port 22                                     #監聽埠
addressFamily any                           #允許所有人鏈接
listenAddress 0.0.0.0                       #IPV4監聽IP   0.0.0.0表示監聽所有
listenAddress : :                           #IPV6監聽IP
protocol 2                                  #使用二代協議
syslogFacility AUTHPRIV                     #日誌認證等級
permitRootLogin yes                         #是否允許root登陸
passwordAuthentication yes                  #是否使用密碼認證
permitEmptyPasswords no                     #是否允許空密碼
loginGraceTime 2m                           #2分鐘不輸入後自動斷開連線
printMotd yes                               #登陸後根據/etc/motd內容列印資訊
printLastLog yes                            #輸出最後一次登入資訊
useDNS yes                                  #反查主機名,關閉後可提升登陸速度
gSSAPIAuthentication yes                    #GSS認證,關閉後可提升登陸速度
pidFile /var/run/sshd.pid                   #存放sshPID的地方
usePrivilegeSeparation sandbox/yes/no       #是否允許以較低許可權執行
pubkeyAuthentication yes                    #使用公鑰認證機制
authorizedKeysFile .ssh/auth                #公鑰的存放位置
MaxAuthTries 5                              #密碼最大嘗試次數
MaxSessions 10                              #最大允許終端數

看了上面的配置引數,接下來我們來繼續看一下ssh命令的常用引數吧

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]

        -q      #靜默模式
        -i      #指定身份檔案
        -o      #指定配置選項
        -X      #開啟X11轉發功能
        -x      #關閉X11轉發功能
        -y      #開啟信任X11轉發功能
        -1      #強制使用ssh協議版本1
        -2      #強制使用ssh協議版本2
        -4      #強制使用IPv4地址
        -6      #強制使用IPv6地址
        -C      #請求壓縮所有資料
        -f      #後臺執行ssh指令
        -N      #不執行遠端指令
        -F      #指定ssh指令的配置檔案
        -A      #開啟認證代理連線轉發功能
        -a      #關閉認證代理連線轉發功能
        -l      #指定連線遠端伺服器登入使用者名稱
        -g      #允許遠端主機連線主機的轉發埠
        -p      #指定遠端伺服器上的埠
        -b      #使用本機指定地址作為對應連線的源ip地址


基於金鑰對驗證

首先,我們通過配置ssh金鑰對,可以實現免金鑰登陸指定主機

1.通過命令生成金鑰對,此時系統會在/root/.ssh/id_rsa下面生成兩個檔案一個公鑰一個私鑰

[[email protected] ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:eVPH36wIC0vuOEdNs19vQPHSJ/lAp53BuVSwNso4Sb8 [email protected]
The key's randomart image is:
+---[RSA 2048]----+
|              o.+|
|             .o*.|
|          . ..BO+|
|         oo* +B**|
|        SoBo+. ==|
|       o.+o= oo..|
|       .o ..E..o |
|      .o.   .   o|
|      .o.      . |
+----[SHA256]-----+

2.通過一個命令將生成的公鑰自動的拷貝到對方主機上,此時系統會將id_rsa.pub拷貝到對方/root目錄下,並會自動命名為authorized_keys.

[[email protected] ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.1.22 (192.168.1.22)' can't be established.
ECDSA key fingerprint is SHA256:2kWFaV72YVvAl2EU2Zop4uAjP3Gy2jW92d0Va/HrSMM.
ECDSA key fingerprint is MD5:fc:6c:91:b0:02:e6:7e:98:52:af:0d:b3:47:d4:69:ef.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '[email protected]'"
and check to make sure that only the key(s) you wanted were added.

3.下次使用ssh登陸對方主機,無需密碼即可登陸上了

[[email protected] ~]# ssh [email protected]

Last login: Mon Nov  5 09:59:45 2018 from 192.168.1.8


通過scp傳輸檔案

scp(secure copy)是一個基於SSH協議在網路之間進行安全傳輸的命令,scp不僅可以傳輸資料,而且在傳輸過程中都是加密的,安全性方面更高

首先我們先看一下,scp命令的常用引數

usage: scp [-12346BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]

        -1      #強制scp命令使用協議ssh1
        -2      #強制scp命令使用協議ssh2
        -4      #強制scp命令只使用IPv4定址
        -6      #強制scp命令只使用IPv6定址
        -B      #使用批處理模式,過程中不詢問
        -C      #允許壓縮
        -p      #留原檔案的修改時間,訪問時間和訪問許可權
        -q      #不顯示傳輸進度條
        -r      #傳送資料夾
        -v      #詳細方式顯示輸出
        -c      #以cipher加密傳輸
        -F      #指定一個替代的ssh配置檔案
        -i      #傳輸時指定金鑰檔案
        -l      #限制傳輸頻寬,以Kbit/s為單位
        -P      #指定傳輸埠
        -S      #指定加密傳輸時所使用的程式

下面我們舉幾個小例子來說明scp的使用方法

1.將 /etc/passwd 拷貝到遠端的 /tmp 目錄下

[[email protected] ~]# scp /etc/passwd [email protected]:/tmp/

[email protected]'s password:
passwd                                                               100%  898   876.6KB/s   00:00

2.將遠端的 /etc/shadow 拷貝到本地的 /tmp 目錄下

[[email protected] ~]# scp [email protected]:/etc/shadow /tmp/

[email protected]'s password:
shadow                                                               100%  714   741.2KB/s   00:00

3.把遠端的 /etc 目錄拷貝到本機的 /tmp 目錄下

[[email protected] ~]# scp -r [email protected]:/etc/ /tmp/

[email protected]'s password:
fstab                                                                100%  465   188.1KB/s   00:00
crypttab                                                             100%    0     0.0KB/s   00:00
mtab                                                                 100%    0     0.0KB/s   00:00
resolv.conf                                                          100%    1     1.2KB/s   00:00
00_header                                                            100% 8702   696.5KB/s   00:00
01_users                                                             100%  232   135.8KB/s   00:00
.........