第1章 SSH服務
1.1 SSH服務協(xié)議說明
SSH 是 Secure Shell Protocol 的簡寫舟陆,由 IETF 網(wǎng)絡工作小組(Network Working Group )制定灭袁;在進行數(shù)據(jù)傳輸之前雪标,SSH先對聯(lián)機數(shù)據(jù)包通過加密技術進行加密處理嗤军,加密后在進行數(shù)據(jù)傳輸。確保了傳遞的數(shù)據(jù)安全。
SSH是專為遠程登錄會話和其他網(wǎng)絡服務提供的安全性協(xié)議姜挺。利用 SSH 協(xié)議可以有效的防止遠程管理過程中的信息泄露問題兼贸,在當前的生產(chǎn)環(huán)境運維工作中段直,絕大多數(shù)企業(yè)普遍采用SSH協(xié)議服務來代替?zhèn)鹘y(tǒng)的不安全的遠程聯(lián)機服務軟件,如telnet(23端口溶诞,非加密的)等鸯檬。
在默認狀態(tài)下,SSH服務主要提供兩個服務功能:
n?一是提供類似telnet遠程聯(lián)機服務器的服務螺垢,即上面提到的SSH服務喧务。
n?另一個是類似FTP服務的sftp-server,借助SSH協(xié)議來傳輸數(shù)據(jù)的.提供更安全的SFTP服務(vsftp,proftp)枉圃。
1.1.1 ssh遠程連接排錯過程
1.2 SSH加密技術說明
簡單的說功茴,SSH加密技術就是將人類可以看得懂的數(shù)據(jù),通過一些特殊的程序算法孽亲,把這些數(shù)據(jù)變成雜亂的無意義的信怠坎穿,然后,通過網(wǎng)絡進行傳輸返劲,而當?shù)搅四康牡睾罅崦粒谕ㄟ^對應的解密算法,把傳過來的加密的數(shù)據(jù)信怠解密成加密前的可讀的正常數(shù)據(jù)篮绿。因此酌呆,當數(shù)據(jù)在互聯(lián)網(wǎng)上傳輸時即使被有心的黑客監(jiān)聽竊取了,也很難獲取到真正黑要的數(shù)據(jù)搔耕。
當前隙袁,網(wǎng)絡上的數(shù)據(jù)包加密技術一般是通過所謂的一對公鑰與私鑰(PublickeyandPivatekey)組合成的密鑰對進行加密與解密操作。如下圖弃榨,A-Server要給B_Client傳數(shù)據(jù)菩收,首先會通過本地的公鑰加密后再到發(fā)到網(wǎng)絡上傳輸。而加密的數(shù)據(jù)到達B_Client端后鲸睛,再經(jīng)由B_Client本地的私鑰將加密的數(shù)據(jù)解密出來娜饵。由于在intemet上傳輸過程中的數(shù)據(jù)是加密過的,所以官辈,傳輸?shù)臄?shù)據(jù)內(nèi)容一般來說是比較安全的箱舞。
1.2.2 ssh實現(xiàn)安全鏈接建立,利用要是和鎖頭
1.?鑰匙=私鑰?鎖頭=公鑰拳亿,私鑰可以解密公鑰
2.?公鑰可以再網(wǎng)絡中傳輸晴股,私鑰再本地主機保存
1.2.3 ssh加密算法
v1漏洞: 密鑰不更換
v2 定期更換密鑰
利用Diffie-Hellman機制定期更新密鑰
1.3 ssh知識要點:
?ssh是安全的加密協(xié)議,用于遠程鏈接linux服務器
?ssh 默認端口是22肺魁,安全協(xié)議版本sshv2电湘,出來2之外還有1(有漏洞)
?ssh服務端主要包括兩個服務功能 ssh遠程鏈接和sftp服務
?linux ssh 客戶端包括ssh 遠程鏈接命令,以及遠程拷貝scp命令等
1.4 SSH服務軟件詳細說明
1.4.1 什么是ssh服務
SSH服務端是一個守護講程 (daemon).他在后臺運行并響應來自客戶端的連接請求。 SSH服務端的講程名為sshd寂呛,負責實時監(jiān)聽遠程SSH客戶端的遠程連接請求怎诫,并進行處理,一般包括公共密鑰認證贷痪、密鑰交換幻妓、對稱密鑰加密和非安全連接等。這個SSH服務就是我們前面基礎系統(tǒng)優(yōu)化中保留開機自啟動的服務之劫拢。
ssh客戶端包含ssh以及像scp(遠程拷貝) slogin(遠程登陸) sftp(安全FTP文件傳輸)等應用程序涌哲。
ssh的工作機制大致是本地的ssh客戶端先發(fā)送一個連接請求到遠程的ssh服務端,服務端檢查連接的客戶端發(fā)送的數(shù)據(jù)包和IP地址尚镰,如果確認合法阀圾,就會發(fā)送密鑰給 SSH的客戶端,此時狗唉,客戶端本地再將密鑰發(fā)回給服務端初烘,自此連接建立。
1.4.2 ssh軟件安裝
客戶端
[root@nfs01 ~]# rpm -qf `which ssh`
openssh-clients-5.3p1-122.el6.x86_64
服務端軟件
[root@nfs01 ~]# rpm -qf `which sshd`
openssh-server-5.3p1-122.el6.x86_64
1.4.3 openssh-clinets 軟件的主要內(nèi)容:
[root@nfs01 ~]# rpm -ql openssh-clients
/etc/ssh/ssh_config???????? ---ssh客戶端配置文件
/usr/bin/.ssh.hmac
/usr/bin/scp????????????????? ---遠程復制命令
/usr/bin/sftp?????????????? ??---遠程文件傳輸服務
/usr/bin/slogin????????????? ---遠程登陸命令
/usr/bin/ssh????????????????? ---ssh遠程登陸管理主機
/usr/bin/ssh-add
/usr/bin/ssh-agent
/usr/bin/ssh-copy-id?????? ?---ssh服務分發(fā)公鑰命令
/usr/bin/ssh-keyscan
1.4.4 openssh-server 軟件的主要內(nèi)容
[root@nfs01 ~]# rpm -ql openssh-server
/etc/rc.d/init.d/sshd??? ??#ssh服務啟動腳本
/etc/ssh/sshd_config???? ??#ssh服務配置文件
/etc/sysconfig/sshd????? ??#ssh創(chuàng)建密鑰有關
/usr/sbin/.sshd.hmac???? ??#ssh加密算法有關文件
/usr/sbin/sshd??????????? ?#ssh服務進程啟動命令
注意:使用sshd采用絕對路徑進行啟動
[root@test ~]# sshd
sshd re-exec requires execution with an absolute path
1.5 ssh服務配置文件說明:
01. 配置文件中所有注釋信息分俯,表示默認參數(shù)配置
02. 配置文件中#空格 后面內(nèi)容表示說明信息
????????????? #參數(shù) 表示配置參數(shù)信息
03. 配置文件參數(shù)信息修改后肾筐,一旦變?yōu)樽⑨專催€原為默認配置
1.5.1 ssh服務的配置文件路徑
vim? /etc/ssh/sshd_config
修改SSH服務的運行參數(shù)缸剪,是通過修改配置文件/etc/ssh/sshd_config實現(xiàn)的吗铐。
一般來說SSH服務使用默認的配置已經(jīng)能夠很好的工作了,如果對安全要求不高杏节,僅僅提供SSH服務的情況唬渗,可以不需要修改任何配置。
1.5.2 配置文件中常用配置說明
[root@test ~]# vim /etc/ssh/sshd_config
#?????? $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
# This is the sshd server system-wide configuration file.? See
# sshd_config(5) for more information.
# This sshd was compiled with PATH=/usr/local/bin:/bin:/usr/bin
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.? Uncommented options change a
# default value.
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.? Uncommented options change a
# default value.
Port 25113?????????????????? #端口
ListenAddress 10.0.0.41?? #監(jiān)聽地址(本地網(wǎng)卡地址)奋渔,指定本地網(wǎng)卡那個網(wǎng)卡提供服務
PermitRootLogin no???????? #是否允許root用戶登陸
#PermitEmptyPasswords no? #禁止空密碼登陸
#UseDNS no?????????????????? #不使用DNS
GSSAPIAuthentication no??? #API認證
# 連接慢的解決
#AddressFamily any???? ????#指定監(jiān)聽ipv4地址镊逝,或是ipv6地址,或者所有都監(jiān)聽
配置文件內(nèi)容說明:
井號(#)注釋的參數(shù)信息為默認配置
井號(#)后面有空格的為描述信息
井號(#)后面沒有空格的為參數(shù)信息
另外:配置文件參數(shù)信息修改后,一旦變?yōu)樽⑨專催€原為默認配置
1.5.3 配置文件語法檢查方法
使用sshd -t 命令 對配置文件的語法進行檢查
正確↓
[root@backup ~]# sshd -t /etc/ssh/sshd
Extra argument /etc/ssh/sshd.
語法格式有錯誤 ?↓
[root@test ~]# sshd -t /etc/ssh/sshd_config
/etc/ssh/sshd_config: line 50: Bad configuration option: uthorizedKeysFile
/etc/ssh/sshd_config: terminating, 1 bad configuration options
1.5.4 ListenAddress 監(jiān)聽地址的說明
如圖所示仲吏,sshd_config配置文件中實際監(jiān)聽本地的網(wǎng)卡,并非網(wǎng)絡地址
監(jiān)聽地址只能監(jiān)聽本地網(wǎng)卡上配置的地址俱尼,監(jiān)聽的網(wǎng)卡可以對請求做出相應,為未監(jiān)聽的網(wǎng)卡不響應請求。
1.5.5 SSH配置文件相關參數(shù)詳細說明
命令參數(shù)
參數(shù)說明
Port
指定sshd進程監(jiān)聽的端口號,默認為22.可以使用多條指令監(jiān)聽多個端口.
默認將在本機的所有網(wǎng)絡接□上監(jiān)聽浴滴,但是可以通過ListenAddress指走只在某個特定的接口上監(jiān)聽.
PermitEmptyPasswords
是否允許密碼為空的用戶遠程登錄.默認為"no"
PermitRootLogin
是否允許root登錄.可用值如下:"yes"(默認)表示允許."no"表示禁止.
"without-password"表示禁止使用密碼認證登錄."forced-commands-only"表示只有在指走了command選項的情況下才允許使用公鑰認證登錄.同時其它認證方法全部被禁止.這個值常用于做遠程備份之類的事情.
1.多開一個窗口
2.臨時多部署一條連接方式
3.給普通用戶sudo權限
UseDNS
指定定sshd是否應該對遠程主機名進行反向解折,以檢查此主機名是否與其IP地址真實對應.默認值為"yes”.
ListenAddress
指定監(jiān)聽并提供服務相應的網(wǎng)卡地址信息
1.5.6 快速修改配置參數(shù)
sed -i '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no'? /etc/ssh/sshd_config
1.6 ssh服務認證類型
01. 基于口令認證方式
02. 基于密鑰認證方式
1.6.1 基于密碼的認證類型
基于口令的安全驗證的方式就是大家現(xiàn)在一直在用的也榄,只要知道服務器的SSH連接帳號和口令(當然也要知道對應服務器的 IP及開放的 SSH端口巡莹,默認為22 ),就可以通過 ssh客戶端登錄到這臺遠程主機。此時甜紫,聯(lián)機過程中所有傳輸?shù)臄?shù)據(jù)都是加密的降宅。
演示了 SecureCR及ssh客戶端連接,口令驗證的測試囚霸。
[root@test ~]# ssh 10.0.0.250
The authenticity of host '10.0.0.250 (10.0.0.250)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.250' (RSA) to the list of known hosts.
root@10.0.0.250's password: ???#需要輸入密碼
Last login: Mon Oct 16 21:13:58 2017 from 10.0.0.1
[root@test ~]#
1.6.2 基于密鑰的安全認證方法
基于密鑰的安全驗證方式是指腰根,需要依靠密鑰,也就是必須事先建立一對密鑰對拓型,然后把公用密鑰(鎖頭)(Public key)放在需要訪問的目標服務器上额嘿,另外,還需要把私有密鑰(鑰匙)(Private key)放到SSH的客戶端或?qū)慕褢舳朔掌魃稀?/p>
私鑰不能在網(wǎng)絡中傳輸---私鑰可以解密公鑰
公鑰可以再網(wǎng)路中傳輸---公鑰不能解密私鑰
此時劣挫,如果要想連接到這個帶有公用密鑰的SSH服務器册养,客戶端SSH軟件或者客戶端服務器就會向SSH服務器發(fā)出請求,請求用聯(lián)機的用戶密鑰進行安全驗證压固。SSH服務器收到請求之后球拦,會先在該SSH服務器上連接的用戶的家目錄下尋找事先放上去的對應用戶的公用密鑰,然后把它和連接的SSH客戶端發(fā)送過來的公用密鑰進行比較帐我。如果兩個密鑰一致坎炼,SSH服務器就用公用密鑰加密"質(zhì)詢"(challenge)并把它發(fā)送給SSH客戶端。
1.7 基于秘鑰登錄配置
1.7.1 環(huán)境準備
作用
主機名
ip
管理服務器
m01
10.0.0.61
備份服務器
backup
10.0.0.41
存儲服務器
nfs01
10.0.0.31
1.7.2 第一個里程碑: 在備份服務器上創(chuàng)建密鑰對
[root@backup ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): ??#指定密鑰對的保存路徑
Enter passphrase (empty for no passphrase): ???????#為密鑰對創(chuàng)建密碼
Enter same passphrase again: ?????????????????????????#確認為密鑰對創(chuàng)建的密碼
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:
72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup
The key's randomart image is:
+--[ RSA 2048]----+???? #2048表示加密的位數(shù)為2048位
|??????? o.==.?? ???|
|?????? o =+.??? ???|
|????? .? .+????? ??|
|???? . . .????? ???|
|????? o S??????? ???|
|???? . o ..????? ??|
|? . E . .o?????? ??|
|?? = . oo??????? ???|
|??? o..o.??????? ???|
+-----------------+
參數(shù)說明:
????? -t 指定創(chuàng)建密鑰對的類型拦键,可以創(chuàng)建的類型如下↓
Specifies the type of key to create.? The possible values are “rsa1” for protocol version 1 and “dsa”, “ecdsa” or “rsa” for protocol version 2.
查看創(chuàng)建出來的密鑰對:
[root@backup ssh]# ll ~/.ssh/
total 12
-rw------- 1 root root 1675 Oct 18 11:07 id_rsa???????? #私鑰文件
-rw-r--r-- 1 root root? 393 Oct 18 11:07 id_rsa.pub??? #公鑰文件
-rw-r--r-- 1 root root? 784 Oct 11 16:27 known_hosts
1.7.3 第二個里程:將公鑰分發(fā)給存儲服務器
[root@backup ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub 172.16.1.31 #用戶使用當前用戶
root@172.16.1.31's password: ??#注意:首次分發(fā)密鑰需要輸入對端服務器的用戶密碼
Now try logging into the machine, with "ssh '172.16.1.31'", and check in:
? .ssh/authorized_keys??? #公鑰分發(fā)到對端后進行改名
to make sure we haven't added extra keys that you weren't expecting.
說明:
?? 通過 man 手冊找到密鑰分發(fā)的命令格式谣光。
?? -i 參數(shù)指定 公鑰文件的存放位置
[use@]表示使用的用戶,默認使用當前登陸的用戶
[root@backup ~]# man ssh-copy-id
Formatting page, please wait...
SSH-COPY-ID(1)????????????????????????????????????????????????? SSH-COPY-ID(1)
NAME
?????? ssh-copy-id? -? install? your? public? key in a remote machine's autho-
? ?????rized_keys
SYNOPSIS
?????? ssh-copy-id [-i [identity_file]] [user@]machine
1.7.4 第三個里程碑:進行登錄測試
[root@backup ~]# ssh nfs01
Last login: Wed Oct 18 10:13:17 2017 from 10.0.0.1
[root@nfs01 ~]#
1.8 telnet服務簡介
1.8.1 部署telnet服務
第一個里程碑:安裝telnet服務軟件
[root@test ~]# yum install telnet telnet-server -y
第二個里程碑:設置開機自啟動
[root@test ~]# vim /etc/xinetd.d/telnet
修改xinetd下的配置文件芬为,從而管理telnet服務
[root@test ~]# vim /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
#?????? unencrypted username/password pairs for authentication.
service telnet
{
??????? flags?????????? = REUSE
??????? socket_type???? = stream
??????? wait??????????? = no
??????? user??????????? = root
??????? server????????? = /usr/sbin/in.telnetd
??????? log_on_failure?+= USERID
??????? disable???????? = no
}
第三個里程碑: 啟動xinetd 服務萄金,讓telnet能夠開機自啟動
[root@test ~]# /etc/init.d/xinetd start
Starting xinetd:?????????????????????????????????????????? [? OK? ]
1.8.2 客戶端測試
說明:
??? telnet服務默認不支持root用戶直接登陸。
[C:\]$ telnet 10.0.0.250
Connecting to 10.0.0.250:23...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.
CentOS release 6.9 (Final)
Kernel 2.6.32-696.el6.x86_64 on an x86_64
test login: oldboy
Password:
Last login: Wed Oct 18 09:41:19 from 10.0.0.1
[oldboy@test ~]$
1.8.3 ssh與telnet區(qū)別(對比示意圖)
01.ssh是加密的服務協(xié)議媚朦,telnet服務是非加密的
02.ssh服務默認支持root用戶登陸捡絮,telnet用戶默認不支持root用戶登陸
1.9 進行免密碼scp傳輸測試
[root@backup ~]# scp -rp? /etc/hosts nfs01:/tmp/
hosts???????????????????????????????????????? 100%? 357???? 0.4KB/s?? 00:00??
1.9.1 scp的基本語法使用:
scp - secure copy (remote file copy program)
每次都是全量拷貝,增量拷貝rsync
推:PUSH
scp -P22 -rp /tmp/oldboy oldboy@10.0.0.143:/tmp
參數(shù)說明:
<- -P(大寫莲镣,注意和ssh命令的不同)接端口福稳,默認22端口時可以省略-P22;
<- -r遞歸,表示拷貝目錄;
<- -p表示在拷貝前后保持文件或目錄屬性;
<- -l limit 限制速度瑞侮。
<- /tmp/oldboy為本地的目錄的圆。“@”前為用戶名半火,“@”后為要連接的服務器的IP越妈。IP后的:/tmp目錄,為遠端的目標目錄钮糖。
說明:
以上命令作用是把本地/tmp/oldboy拷貝到遠端服務器10.0.0.143的/tmp目錄;
拉:PULL
scp -P22 -rp root@10.0.0.7:/tmp/oldboy /opt/
說明:
還可以把遠端目錄抓到本地
結論:
scp為遠程拷貝文件或目錄的命令梅掠,更多用法酌住,請man scp;
拷貝權限為連接的用戶對應的權限阎抒。
1.10 使用sftp進行基于密鑰的文件傳輸
1.10.1 sftp簡介
sftp是Secure File Transfer Protocol的縮寫酪我,安全文件傳送協(xié)議∏胰可以為傳輸文件提供一種安全的網(wǎng)絡的加密方法都哭。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的其中一部分.
1.10.2 sftp命令說明
[root@m01 ~]# sftp -oPort=22? 172.16.1.31
Connecting to 172.16.1.31...
sftp>
說明:
?? -o??? ????連接的時候指定選項
Port=22 ?端口指定為22逞带、
1.10.3 sftp使用參數(shù)說明
操作遠程服務器
ls??? 顯示遠端主機的列表
cd?? 切換遠程的工作目錄
pwd ?顯示遠程的工作目錄
操作本地服務器
lls?? 顯示本地主機的列表
lcd?? 切換本地的工作目錄
lpwd? 查看本地目錄信息
上傳下載文件參數(shù)
get?? --- 表示從遠程服務器下載數(shù)據(jù)(單個文件)
mget? --- 表示下載多個文件
put?? --- 表示從本地服務器上傳數(shù)據(jù)(單個文件)
mput? --- 表示上傳多個文件
查看幫助的方式:
sftp> help?????? 顯示幫助信息
1.11 ssh相關重點知識總結
?ssh協(xié)議:sshd---遠程連接(sshd),sftp
?為加密的遠程連接協(xié)議欺矫,相關軟件有openssh.openssh---https。
?默認端口22
?協(xié)議版本1X和2.x,2.x更安全展氓。了解SSH協(xié)議原理(ssh連接過程X
?服務端ssh遠程連接服務穆趴,sftp服務。sshd守護進程遇汞,開機要自啟動毡代。
?ssh客戶端包含ssh,scp,sftp命令。
?ssh安全驗證方式:口令和密鑰勺疼,這兩種都是基于口令的教寂,SSH密鑰登錄的原理。
?ssh服務安全優(yōu)化执庐,修改默認端口22,禁止root遠程連接酪耕,禁止dns,SSH只監(jiān)聽內(nèi)網(wǎng)IP
?ssh密鑰對,公鑰(publickey)在服務器端轨淌,比喻就是鎖頭迂烁,私鑰(privatekey)在客戶端,比喻就是鑰匙递鹉。
第2章 重點知識補充
2.1 一個服務始終無法啟動
01.服務的查日志/系統(tǒng)日志
02.檢查服務端口有沒有沖突
2.2 【企業(yè)面試題】:給你一個端口如何命令行查出對應的服務是什么?
測試服務端口有沒有開啟
ss -lntup|grep 22
netstat -lntup|grep -w "22"
lsof -i:22
grep? "\b22/\b" /etc/services
nmap -p 22 172.16.1.41
nc 172.16.1.41 22
telnet 172.16.1.41 22
2.2.1 【企業(yè)面試題】根據(jù)進程名查看對應的端口是什么盟步?
netstat/ss –lntup|grep 進程或服務名字
2.3 ssh入侵案例說明
被入侵實例http://phenixikki.blog.51cto.com/7572938/1546669
IP何防止SSH登錄入侵小結:
1、用密鑰登錄躏结,不用密碼登陸
2却盘、牤牛陣法:解決SSH安全問題
a.防火墻封閉SSH,指定源IP限制(局域網(wǎng)、信任公網(wǎng))
b.開啟 SSH 只監(jiān)聽本地內(nèi)網(wǎng) IP ( ListenAddress 172.16.1.61 )
3媳拴、盡量不給服務器外網(wǎng)ip
4黄橘、最小化(軟件安裝-授權)
5、給系統(tǒng)的重要文件或命令做一個指紋
6屈溉、給他鎖上?chattr?+i?+a
第3章 擴展問題
3.1 服務端端口號變化了塞关,如何基于秘鑰連接
3.1.1 環(huán)境準備
實驗環(huán)境:
[root@test ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
將一臺服務器的ssh服務端口修改為63389
[root@test ~]# netstat -lntup|grep sshd
tcp??????? 0????? 0 0.0.0.0:63389? 0.0.0.0:*???????? LISTEN????? 5083/sshd??????????
tcp??????? 0????? 0 :::63389 ????????:::*??????? ??????LISTEN????? 5083/sshd???
3.1.2 通過另外一臺服務器創(chuàng)建并分發(fā)密鑰
第一個里程碑: 現(xiàn)創(chuàng)建密鑰使用 ssh-keygen
[root@backup ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):?? #指定密鑰對的保存路徑
Enter passphrase (empty for no passphrase):????? ??#為密鑰對創(chuàng)建密碼
Enter same passphrase again:??????????????????????? ??#確認為密鑰對創(chuàng)建的密碼
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:
72:48:65:1d:25:69:e1:4c:ae:2b:6f:a5:aa:70:96:1e root@backup
The key's randomart image is:
+--[ RSA 2048]----+???? #2048表示加密的位數(shù)為2048位
|??????? o.==.????? |
|?????? o =+.?????? |
|????? .? .+??????? |
|???? . . .???????? |
|????? o S?????????? |
|???? . o ..??????? |
|? . E . .o???????? |
|?? = . oo?????????? |
|??? o..o.?????????? |
+-----------------+
第二個里程碑:分發(fā)密鑰,注意ssh的端口
[root@backup ~]# ssh-copy-id? -i ~/.ssh/id_rsa.pub "-p63389 172.16.1.250"
The authenticity of host '[172.16.1.250]:63389 ([172.16.1.250]:63389)' can't be established.
RSA key fingerprint is d3:41:bb:0d:43:88:da:a3:2c:e8:36:91:11:c9:e4:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.16.1.250]:63389' (RSA) to the list of known hosts.
root@172.16.1.250's password:
Now try logging into the machine, with "ssh '-p63389 172.16.1.250'", and check in:
? .ssh/authorized_keys?? #分發(fā)到對端服務器后進行改名
to make sure we haven't added extra keys that you weren't expecting.
說明:
?? 通過 man 手冊找到密鑰分發(fā)的命令格式子巾。
?? -i 參數(shù)指定 公鑰文件的存放位置
[use@]表示使用的用戶帆赢,默認使用當前登陸的用戶
-p 指定端口小压,主要要在雙引號之間(通過cat `which ssh-copy-id` 命令腳本內(nèi)容得知)
[root@backup ~]# man ssh-copy-id
Formatting page, please wait...
SSH-COPY-ID(1)????????????????????????????????????????????????? SSH-COPY-ID(1)
NAME
?????? ssh-copy-id? -? install? your? public? key in a remote machine's autho-
?????? rized_keys
SYNOPSIS
第三個里程碑: 測試密鑰登陸
[root@backup ~]# ssh 172.16.1.250 -p 63389
Last login: Wed Oct 18 15:42:05 2017 from 10.0.0.41
[root@test ~]#
3.2 如何實現(xiàn)自動創(chuàng)建秘鑰對,同時分發(fā)公鑰(編寫腳本實現(xiàn))
腳本內(nèi)容:
[root@m01 ~]# vim /server/scripts/piliang_fenfa.sh
? 1 #!/bin/bash
? 2
? 3 #make key
? 4 \rm -f /root/.ssh/id_dsa
? 5 ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
? 6
? 7 #fengfagongyao
? 8 for ip in 8 31 41
? 9 do
?10 echo ====fenfa key to host 172.16.1.$ip====
?11 sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
?12 echo ===============fenfa end==============
?13 echo ""
?14 done
腳本說明:
?? ssh-keygen -t dsa -f /root/.ssh/id_dsa -P "" -q
?? 創(chuàng)建密鑰椰于,-f指定存放位置怠益,-P 密鑰加密的密碼? -q 減少信息輸出
sshpass -p123456 ssh-copy-id -i /root/.ssh/id_dsa.pub "-o StrictHostKeyChecking=no root@172.16.1.$ip"
?? 這里需要安裝一個軟件 yum install sshpass -y 用來提供中戶密碼
ssh-copy-id 命令來分發(fā)密鑰 -i 指定密鑰本地存放的路徑
-o StrictHostKeyChecking=no 在登陸其他服務器是不選擇yes/no
for ip in 8 31 41
?? 這里使用for循環(huán)來對ip地址進行變化。