shell命令--ssh


shell命令--ssh

0、ssh命令的專屬圖床

點此快速打開文章圖床_shell命令ssh

1、ssh命令的功能說明

ssh 命令是安全的加密協議,用於遠程連接 Linux 服務器,默認端口是22

SSH(遠程連接工具)連接原理:ssh服務是一個守護進程(demon),系統后台監聽客戶端的連接,ssh服務端的進程名為sshd,負責實時監聽客戶端的請求(IP 22端口),包括公共秘鑰等交換等信息。

ssh服務端由2部分組成: openssh(提供ssh服務) openssl(提供加密的程序)

ssh的客戶端可以用 XSHELLSecurecrt, Mobaxterm等工具進行連接

SSH的工作機制

​ 服務器啟動的時候自己產生一個密鑰(768bit公鑰),本地的ssh客戶端發送連接請求到ssh服務器,服務器檢查連接點客戶端發送的數據和IP地址,確認合法后發送密鑰(768bits)給客戶端,此時客戶端將本地私鑰(256bit)和服務器的公鑰(768bit)結合成密鑰對key(1024bit),發回給服務器端,建立連接通過key-pair數據傳輸。

SSH的加密技術

加密技術:傳輸過程,數據加密。
1.SSH1沒有對客戶端的秘鑰進行校驗,很容易被植入惡意代碼
2.SSH2增加了一個確認聯機正確性的Diffe_Hellman機制,每次數據的傳輸,Server都會檢查數據來源的正確性,避免黑客入侵。
SSH2支持RSA和DSA密鑰
DSA:digital signature Algorithm 數字簽名
RSA:既可以數字簽名又可以加密

SSH知識小結

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

2.SSH的默認端口是22,安全協議版本是SSH2

3.SSH服務器端主要包含2個服務功能SSH連接和SFTP服務器

4.SSH客戶端包含ssh連接命令和遠程拷貝scp命令等

如何防止SSH登錄入侵

1.密鑰登錄,更改端口

2.牤牛陣法

3.監聽本地內網IP(ListenAddress 192.168.25.*)

2、ssh命令的語法格式

SYNOPSIS
  ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port]
      [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
      [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option]
      [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port]
      [-w local_tun[:remote_tun]] [user@]hostname [command]

3、ssh命令的選項說明

usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
        [-D [bind_address:]port] [-E log_file] [-e escape_char]
        [-F configfile] [-I pkcs11] [-i identity_file]
        [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
        [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
        [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
        [user@]hostname [command]

4、ssh命令的實踐操作

范例1:Xshell 遠程登陸主機

ssh root@10.0.0.99 22  -->默認端口就是22,這里演示端口號位置
ssh root@10.0.0.99

范例2:一個主機遠程登陸其它主機

ip a|awk -F '[ /]+' '$NF~/eth0/ {print $3}'
ip a|awk -F '[ /]+' '$NF~/eth0/ {print $3}'
ssh 10.0.0.199
ssh -p 22 root@10.0.0.199

范例3:直接執行命令,最好全路徑

ssh 10.0.0.199 /bin/ls 
ssh 10.0.0.199 hostname
hostname

范例4:查看已知主機

cat /root/.ssh/known_hosts

范例5:關於后台ssh服務的相關

查詢openssl軟件

rpm -qa openssh openssl

查詢sshd進程和端口

ps -ef | grep ssh

查看ssh端口

netstat -lntup |grep ssh
ss | grep ssh
netstat -a | grep ssh
netstat -lnt | grep 22
netstat -lntup | grep ssh | wc -l  -->只要大於2個就是ssh服務就是好的

查看ssh的秘鑰目錄

ll /root/.ssh/known_hosts  -->當前用戶家目錄的.ssh目錄下

ssh的配置文件

egrep -v '^$|#' /etc/ssh/sshd_config

范例6:免秘鑰登陸,登錄的時候不用使用密碼

生成密鑰對

ssh-keygen  -->-->連續回車
ssh-keygen -t dsa  -->也可指定驗證方式,使用-t參數

Your identification has been saved in /root/.ssh/id_rsa.  -->私鑰位置
Your public key has been saved in /root/.ssh/id_rsa.pub.  -->公鑰位置

RSADSA 加密算法的區別

  • RSA:是一種加密算法(PS:RSA也可以進行數字簽名的),它的簡寫的來由是 Ron RivestAdi ShamirLeonard Adleman 這三個人姓氏的第一個字母連接起來就是RSA。
  • DSA:就是數字簽名算法的英文全稱的簡寫,即 Digital Signature Algorithm ,簡寫就是 DSA
    RSA 既可以進行加密,也可以進行數字簽名實現認證,而 DSA 只能用於數字簽名從而實現認證。

也可以免交互快速生成密鑰對

ssh-keygen --help  -->查看用法
mv /root/.ssh/* /tmp  -->將之前產生的密鑰對移走
ssh-keygen -t rsa -f /root/.ssh/id_rsa  -P "" -q  -->免交互產生密鑰對
ls /root/.ssh

拷貝密鑰中的公鑰文件到目標主機上

ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.199  -->輸入yes和目標主機root密碼
scp -rp ~/.ssh/id_rsa.pub 10.0.0.199:~/.ssh/authorized_keys  -->也可以使用scp命令
ls -ld ~/.ssh/   -->特別注意權限700
ls -l ~/.ssh/   -->特別注意權限600

也可免交互拷貝公鑰

rpm -qa sshpass
yum -y install sshpass &>/dev/null  -->使用此工具
rpm -qa sshpass
sshpass -p123456 ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.199 "-o StrictHostKeyChecking=no"  -->參數-p是可加密碼

開始測試是否免秘鑰

ssh 10.0.0.199 ifconfig eth0

開發腳本實現批量管理服務器簡單思路

cat >cmd.sh <<'EOF'
for n in 199
do
 echo "=====10.0.0.$n======"
 ssh 10.0.0.$n "$1"
done
EOF

sh cmd.sh hostname

『MineGi有話說』:快來掃一掃下面鏈接的二維碼,加入我們吧!


免責聲明!

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



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