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
.........