SSH(遠程登錄)


在linux中SSH服務對應兩個配置文件:

 

 

ssh特點:在傳輸數據的時候,對文件加密后傳輸。

ssh作用:為遠程登錄會話和其他網絡服務提供安全性協議。

 

ssh小結:

  1、SSH是安全的加密協議,用於遠程連接服務器。

  2、SSH默認端口是22,安全協議版本有SSH2、SSH1。(SSH1有漏洞)

  3、SSH服務端主要包含兩個服務功能SSH遠程連接和SFTP服務。

  4、Linux SSH客戶端包含ssh遠程連接命令,以及遠程拷貝scp命令等。

 

ssh服務有如下兩個工具:

 

***服務端或客戶端版本不相同是連接不上的***

 

客戶端連接服務端基本口令(-p指定端口,不加為默認端口):

  ssh -p22 root@10.0.0.10ssh root@10.0.0.10

 

linux通信驗證所在地(等第一次登錄時會在本地殘生一個秘鑰文件~/.ssh/known_hosts【多個秘鑰】):

cd ~/.ssh/

 

SSH默認登錄文件相關參數配置

相關參數說明(/etc/ssh/sshd_config):

port  :指定sshd進程監聽的端口號,默認為22.可以使用多條指令多個端口。默認為22,可以使用多條指令監聽多個端口。默認將在本機的所有網絡接口上監聽,但是可以通過ListenAddress指定只在特點的接口上監聽。

PermitEmptyPasswords  :是否允許密碼為空的用戶遠程登錄。默認為“no”。

PermitRootLogin  :是否允許root登錄。可用值如下:“without-password”表示使用密碼認證登錄。“forced-commands-only”表示只有指定了command選項的情況下允許使用公鑰認證登錄。同時其它認證方法全部禁止。這個值常

          用語遠程備份之類的事情。(為了安全:不允許root用戶登錄,但可以登錄普通用戶使用sudo來執行相應的root命令)

UseDNS  :指定sshd是否應該對遠程主機名進行方向解析,以檢查此主機名是否與其IP地址真實對應。默認值為“yes”。

 

在SSH服務中含有有SCP遠程拷貝服務:

  SCP為遠程拷貝文件或目錄的命令(命令介紹):

-P(大寫)  :接接口號,SSH默認端口為22,如果端口為22可以省略。

-r  :遞歸,表示拷貝目錄。

-p(小寫)  :表示在拷貝前后保存文件或目錄屬性。

-l  :(limit)限速。

 

例子:

  scp -P22 -rp /etc oldboy@10.0.0.10:/tmp

也可實現rsync的推拉操作(例子):

  推:scp -P22 -rp /etc oldboy@10.0.0.10:/tmp

  拉:scp -P22 -rp oldboy@10.0.0.10:/tmp/etc /data

  限速:scp -P22 -rp -l 10 /etc oldboy@10.0.0.10:/tmp

 

scp小結:

  1、scp是加密的遠程拷貝,而cp僅為本地拷貝。

  2、可以把數據從一台機器推到另一台機器,也可以從其它服務器吧數據拉回到本地執行命令執行命令。

  3、每次都是全量完整拷貝,因此,效率不高,適合一次性拷貝用,如果需要增量拷貝,用rsync。

 

SSH服務附帶的sftp功能服務

winds客戶端與linux服務器之間的傳輸數據工具:

  1、rz、sz(lrzsz)

  2、winscp WinSCP-4.0.5(基於SSH,SFTP)

  3、SFX(xshell)

  4、SFTP(基於SSH,加密傳輸)

  5、samba,http,ftp,nfs

    FTP工具:vsftp、proftpd、SFTP

 

sftp客戶端連接sftp服務方法(不安全):

  1、sftp -oPort=22 oldboy@10.0.0.10  #l連接端口

  2、cd /home/oldboy  #可以切換指定的目錄

  3、put /etc/hosts  #把/etc/hosts客戶端本地傳輸到sftp服務器當前連接的目錄

  4、mkdir /tmp/ett  #也可以創建目錄

  5、get /etc/hosts /home  #可以下載文件(不指定位置默認下載到原登錄時的目錄位置)

 

使用密鑰認證的方法步驟:

  1、生成密鑰(建議在普通用戶下生成為了安全):

    ssh-keygen -t rsa

 

  2、將公鑰發送給需要配置密鑰的用戶(該命令只能發送“公鑰=鎖”“私鑰=鑰匙”)

    ssh-copy-id -i .ssh/id_rsa.pub "-p52113 names@172.16.1.100"

 

  

  3、啟動公鑰認證:

    修改配置文件/etc/ssh/sshd_config,將“PasswordAuthentication yes”修改為“PasswordAuthentication no”。

  4、測試(不用密碼發送表示成功):

    scp -P52113 hosts names@172.16.1.100:~  #端口號我改成了52113,原先以及拷貝了hosts放在家目錄中

 

   5、為了安全在普通用戶中操作但是沒有權限,所有配給該用戶sudo的權限

 

  6、跳轉到names用戶,然后執行命令測試

    ssh -p52113 -t names@172.16.1.100 sudo rsync ~/hosts /etc/hosts  #執行完后,我操作的/etc/hosts,但原先已經拷貝到了家目錄,所有直接傳遞

 

  -t參數是sudo命令需要tty終端;而默認ssh沒有;所有ssh加 -t參數分配一個終端sudo的取消默認指向一個終端的命令,如果不想加-t參數可以直接把Defaults  requiretty參數注釋掉(為了安全不建議)。路徑/etc/sudoers

 非交互式傳輸:

 

第一步:安裝expect、添加用戶及創建密碼

yum install expect
useradd oldboy2
echo "oldboy"|passwd --stdin oldboy2
id oldboy2
su - oldboy2

 

第二步:創建密鑰
echo -e "\n"|ssh-keygen -t dsa -P ''

 

第三步:在管理機編輯 vim ssh_expect.exp添加如下代碼
***************************************************
#!/usr/bin/expect
if { $argc != 2 } {
send_user "usage: expect ssh_expect.exp file host\n"
exit
}

 

#define var
set file [lindex $argv 0]
set host [lindex $argv 1]
set password "oldboy"
#spawn scp /etc/hosts root@10.0.0.142:/etc/hosts
#spawn scp -P52113 $file oldboy@$host:$dir
spawn ssh-copy-id -i $file "-p 52113 oldboy2@$host"
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof

 

exit -onexit {
send_user "good bye"
}

 

***************************************************
第四步:推送公鑰
expect ssh_expect.exp ~/.ssh/id_dsa.pub 172.16.1.31

 

以上服務小結:

  1、ssh為加密的遠程連接協議。相關軟件有openssh、openssl。

  2、默認端口號為22.

  3、服務端ssh遠程連接服務,sftp服務,sshd后湖進程,開機要自啟動。

  4、ssh客戶端包含ssh、scp、sftp命令

  5、ssh安全驗證方式:口令和密鑰,這兩種都是基於口令和ssh密鑰登錄的原理。

  6、ssh服務安全優化,修改默認端口22,禁止root遠程連接,禁止dns,SSH只監聽內網IP。

  7、ssh密鑰對,公鑰在服務器端,比喻就是鎖頭,私鑰在客戶端,比喻就是鑰匙。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM