ssh的應用和vnc連接桌面


介紹一個   VNC連接工具:iis7服務器管理工具
IIs7服務器管理工具可以批量連接並管理VNC服務器
作為服務器集成管理器,它最優秀的功能就是批量管理windows與linux系統服務器、vps。能極大的提高站長及服務器運維人員工作效率。同時iis7服務器管理工具還是vnc客戶端,服務器真正實現了一站式管理,可謂是非常方便。
下載地址:http://yczm.iis7.com/?tscc

一、什么是ssh?

1、SSH是一種網絡協議,用於計算機之間的加密登錄。如果一個用戶從本地計算機,使用SSH協議登錄另一台遠程計算機,我們就可以認為,這種登錄是安全的,即使被中途截獲,密碼也不會泄露。SSH之所以能夠保證安全,原因在於它采用了公鑰加密。

2、SSH是傳輸層和應用層上的安全協議,它只能通過加密連接雙方會話的方式來保證連接的安全性。當使用ssh連接成功后,將建立客戶端和服務端之間的會話,該會話是被加密的,之后客戶端和服務端的通信都將通過會話傳輸。

3、SSH服務的守護進程為sshd,默認監聽在22端口上。

4、所有ssh客戶端工具,包括ssh命令,scp,sftp,ssh-copy-id等命令都是借助於ssh連接來完成任務的。也就是說它們都連接服務端的22端口,只不過連接上之后將待執行的相關命令轉換傳送到遠程主機上,由遠程主機執行。

5、ssh客戶端命令(ssh、scp、sftp等)讀取兩個配置文件:全局配置文件/etc/ssh/ssh_config和用戶配置文件~/.ssh/config。實際上命令行上也可以傳遞配置選項。它們生效的優先級是:命令行配置選項 > ~/.ssh/config > /etc/ssh/ssh_config。

ssh服務端配置文件為/etc/ssh/sshd_config,注意和客戶端的全局配置文件/etc/ssh/ssh_config區分開來。

[root@localhost ~]# ls /etc/ssh/
moduli  ssh_config  sshd_config  ssh_host_ecdsa_key  ssh_host_ecdsa_key.pub  ssh_host_ed25519_key  ssh_host_ed25519_key.pub  ssh_host_rsa_key  ssh_host_rsa_key.pub
[root@localhost ~]#

6、ssh涉及到兩個驗證:主機驗證和用戶身份驗證。通過主機驗證,再通過該主機上的用戶驗證,就能唯一確定該用戶的身份。一個主機上可以有很多用戶,所以每台主機的驗證只需一次,但主機上每個用戶都需要單獨進行用戶驗證。

7、ssh支持多種身份驗證,最常用的是密碼驗證機制和公鑰認證機制,其中公鑰認證機制在某些場景實現雙機互信時幾乎是必須的。雖然常用上述兩種認證機制,但認證時的順序默認是gssapi-with-mic,hostbased,publickey,keyboard-interactive,password。注意其中的主機認證機制hostbased不是主機驗證,由於主機認證用的非常少(它所讀取的認證文件為/etc/hosts.equiv或/etc/shosts.equiv),所以網絡上比較少見到它的相關介紹。總的來說,通過在ssh配置文件(注意不是sshd配置文件)中使用指令PreferredAuthentications改變認證順序不失為一種驗證的效率提升方式。

8、ssh客戶端其實有不少很強大的功能,如端口轉發(隧道模式)、代理認證、連接共享(連接復用)等。

9、很重要卻幾乎被人忽略的一點,ssh登錄時會請求分配一個偽終端。但有些身份認證程序如sudo可以禁止這種類型的終端分配,導致ssh連接失敗。例如使用ssh執行sudo命令時sudo就會驗證是否要分配終端給ssh。

二、非對稱加密基礎

1、對稱加密:

加密和解密使用一樣的算法,只要解密時提供與加密時一致的密碼就可以完成解密。例如QQ登錄密碼,銀行卡密碼,只要保證密碼正確就可以。

2、非對稱加密:

通過公鑰(public key)和私鑰(private key)來加密、解密。公鑰加密的內容可以使用私鑰解密,私鑰加密的內容可以使用公鑰解密。一般使用公鑰加密,私鑰解密,但並非絕對如此,例如CA簽署證書時就是使用自己的私鑰加密。在接下來介紹的SSH服務中,雖然一直建議分發公鑰,但也可以分發私鑰。

所以,如果A生成了(私鑰A,公鑰A),B生成了(私鑰B,公鑰B),那么A和B之間的非對稱加密會話情形包括:

(1).A將自己的公鑰A分發給B,B拿着公鑰A將數據進行加密,並將加密的數據發送給A,A將使用自己的私鑰A解密數據。

(2).A將自己的公鑰A分發給B,並使用自己的私鑰A加密數據,然后B使用公鑰A解密數據。

(3).B將自己的公鑰B分發給A,A拿着公鑰B將數據進行加密,並將加密的數據發送給B,B將使用自己的私鑰B解密數據。

(4).B將自己的公鑰B分發給A,並使用自己的私鑰B加密數據,然后A使用公鑰B解密數據。

雖然理論上支持4種情形,但在SSH的身份驗證階段,SSH只支持服務端保留公鑰,客戶端保留私鑰的方式,所以方式只有兩種:

客戶端生成密鑰對,將公鑰分發給服務端;服務端生成密鑰對,將私鑰分發給客戶端。只不過出於安全性和便利性,一般都是客戶端生成密鑰對並分發公鑰。后文將給出這兩種分發方式的示例。

二、ssh的驗證方式

1、 密碼驗證

直接輸入用戶名和密碼進行登陸

2、 密鑰驗證

數據加密:公鑰加密,私鑰解密

ssh

語法:

ssh 主機名/IP(使用當前用戶登錄)

當我第一次連接某個主機的時候,系統會提醒我,是否要記錄這個主機的公鑰指紋,目標服務特有的東西

# ssh 192.168.2.135

[root@tracker1 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:eb:05:b3 brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.134/24 brd 192.168.2.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:feeb:5b3/64 scope link
       valid_lft forever preferred_lft forever
[root@tracker1 ~]#
[root@tracker1 ~]# ssh 192.168.2.135
The authenticity of host '192.168.2.135 (192.168.2.135)' can't be established.
ECDSA key fingerprint is e0:84:42:4f:a6:75:83:c0:39:37:d8:aa:e4:da:be:f6.
Are you sure you want to continue connecting (yes/no)?

判斷的方法是讀取~/.ssh/known_hosts文件/etc/ssh/known_hosts文件,搜索是否有192.168.2.135的主機信息

如果沒有搜索到對應該地址的host key,則詢問是否保存主機B發送過來的host key,如果搜索到了該地址的host key,則將此host key和主機B發送過來的host key做比對,如果完全相同,則表示主機A曾經保存過主機B的host key,無需再保存,直接進入下一個過程——身份驗證,如果不完全相同,則提示是否保存主機B當前使用的host key。

[root@tracker1 ~]# ssh 192.168.2.135
The authenticity of host '192.168.2.135 (192.168.2.135)' can't be established.
ECDSA key fingerprint is e0:84:42:4f:a6:75:83:c0:39:37:d8:aa:e4:da:be:f6.     #公鑰指紋
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.2.135' (ECDSA) to the list of known hosts.
root@192.168.2.135's password:
Last login: Tue Jul  2 02:25:32 2019 from 192.168.2.135
[root@tracker2 ~]#

或者windows端使用圖形界面ssh客戶端工具時:

查看主機A記錄的公鑰指紋

# cat .ssh/known_hosts

該文件中,每行一個host key

[root@tracker2 ~]# exit
logout
Connection to 192.168.2.135 closed.
[root@tracker1 ~]#
[root@tracker1 ~]# ls .ssh/
known_hosts
[root@tracker1 ~]#
[root@tracker1 ~]# cat .ssh/known_hosts
192.168.2.135 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJLQ0tEV5MrvuQ/cAOorvDY19jy/egXiUNceSoRjVw1lRvFohd5x+oIfE0gUTs9E1Ho4hGQJ/yaqRILmlUkLoYc=
[root@tracker1 ~]#

綜上所述,在主機驗證階段,服務端持有的是私鑰,客戶端保存的是來自於服務端的公鑰。注意,這和身份驗證階段密鑰的持有方是相反的。

連接到指定的遠程用戶名 

# ssh -l djl 192.168.0.56

 # ssh djl@192.168.0.56

記錄這個主機的公鑰指紋的位置

ssh配置文件、公鑰、私鑰的位置

刪除生成新的公鑰指紋

再次連接,原來的公鑰指紋失效

刪除原來的公鑰指紋

# rm -rf .ssh/*

 

要是想打開遠程圖形化界面的話,條件:

ssh客戶端:

1、 有xservice

2、 開啟x11轉發

ssh服務器:

1、 安裝xorg-x11-xauth

2、 xclient

查看ssh服務器是否安裝xorg-x11-xauth

# rpm -qa | grep xauth

開啟X11轉發

# ssh 192.168.0.56 -X

 

對稱加密:

公鑰

私鑰

非對稱加密:

數字簽名

 

 

生成一個密鑰對

# ssh-keygen

查看

私鑰:

id_rsa

公鑰:

id_rsa.pub

發送公鑰

# ssh-copy-id -i id_rsa.pub root@192.168.0.56

 查看保存公鑰的位置

 無密登錄實現

  VNC的應用

 

查看vnc工具包是否安裝

 # yum list *vnc*

 安裝VNC服務

 # yum install tigervnc-server.x86_64 -y

 

設置密碼 

# vncserver 

密碼保存位置

# ls .vnc/

# vncserver -list

修改vnc的密碼

#vncpasswd

關閉1號桌面

# vncserver -kill :1

開啟3號桌面

# vncserver :3

 打開VNC,輸入如下:

縮放桌面

 如果多個人同時連接,一定要打開共享連接

 輸入連接密碼

連接上的效果圖如下:

 同步服務器桌面 ,在客戶端上面就不需要指明桌面了

# x0vncserver --passwordfile=.vnc/passwd

實驗失敗,未解決

參考博客:

https://www.cnblogs.com/f-ck-need-u/p/7129122.html

https://www.cnblogs.com/youngerger/p/9104144.html


免責聲明!

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



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