Ⅰ 如何用C#實現ssh登錄主機
1. 什麼是SSH
SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。SSH是每一台linux電腦的標准配置,但是在windows系統中默認是沒有安裝SSH的,需要安裝SSH相關服務端軟體,比如FreeSSHD。
2. SSH可以用來做什麼
SSH可以用於遠程登錄主機,登錄方式通常有兩種:口令登錄和公鑰登錄
一:口令登錄:通過在服務端設定的用戶名和密碼進行登錄,每次都登錄都需要填寫密碼
二:公鑰登錄:通過一對公鑰和私鑰登錄,公鑰存放在服務端私鑰存放在客戶端,在登錄時服務端向客戶端發生一個隨機字元串,然後客戶端通過私鑰先進行加密然後發生到服務端,在服務端接受和用公鑰進行解密,然後匹配是否正確解密來驗證登錄,注意:存在在服務端的公鑰名稱和用戶名一致,已區分不同用戶不同的公鑰;這樣每次就可以直接用公鑰登錄省去了密碼的繁瑣。
SSH可以用戶服務端和客戶端之間雙向文件傳輸
3. SharpSSH與SSH服務端FreeSSHD
SharpSSH是一個用C#實現的SSH客戶端組件,用戶可以根據需要修改使用改組件已滿足自己的需求。
注意:在官網下載SharpSSH會因為主機為安裝Mono而出現Mono.Security.dll的引用錯誤,只需要下載Mono.Security.dll重新引用即可。
我在Windows7 VS2012的環境下測試官網下載的SharpSSH項目升級成功,解決方案如下:
其中有兩個項目:Examples,SharpSSH顧名思義,Examples是使用示例,SharpSSH就是真正的實現項目,設置Examples為啟動項,運行效果如下:
可以看到,示例為我們提供了16個功能項,再次我們需要測試遠程登錄和文件傳輸,使用第13, 和16項測試即可,同時也會用到第5項生成公鑰私鑰對;
客戶端SharpSSH已經實現了,接下來在Windows系統中就需要安裝客戶端了,這里選擇FreeSSHD作為客戶端。下載下來直接下一步下一步安裝,安裝完成後運行會提示你是否生成Key選擇是即可,同時會安裝FreeSSHDService服務,選擇關閉該服務;
此時可以看到支持telnet和SSH服務,且都關閉,到此步客戶端服務端都已經准備就緒,下面就進行我們的登錄測試和文件傳輸測試吧;
4. 遠程登錄執行命令
上面提過,登錄有兩種方式,口令登錄和公鑰登錄,先介紹口令登錄吧;
口令登錄:即在服務端freeSSHd上創建一個用戶名和密碼,使用此密碼口令登錄
首先在freeSSHd上的Users選項中點擊Add彈出添加用戶界面,然後Login填寫用戶名,authorization選擇Password stored as SHA1 hash 然後填寫密碼和重復密碼,勾選該用戶可用服務,如下圖,創建了用戶名和密碼都是test:
然後我們選擇SSH項,將Use new console engine項的勾選去掉已防止中午亂碼,如圖:
選擇確定即可創建成功,然後回到主界面我們打開SSH服務
如上圖所示即表示SSH服務已經成功開啟;但是有可能會錯誤:常見原因是地址已使用,這是埠號22已經被使用造成的,關閉該埠的進程即可。
接下來我們運行我們的sharpSSH進行登錄測試吧。
我們選擇第13項,然後輸入遠程地址I(由於服務端就在本機所以是127.0.0.1),然後不選擇公鑰登錄,然後輸入密碼,連接成功,執行date命令查詢當前時間:
現在我們測試公鑰登錄:
公鑰登錄需要先生成公鑰私鑰對,我們選擇第5項KeyGen來生成,命名為test(和用戶名一致),Sig Type選擇dsa, 然後Comment為空彈出窗口輸入passphrase我們不輸入直接選擇ok,這樣就在sharpSSH的bin\Debug目錄下生成了我們的test的公鑰私鑰兩個文件。
Ⅱ windows怎麼開ssh服務
1. ssh簡介以及本例的應用場景
① ssh的簡介
SSH是一個用來替代TELNET、FTP以及R命令的工具包,主要是想解決口令在網上明文傳輸的問題。為了系統安全和用戶自身的權益,推廣SSH是必要的。 SSH是英文Secure Shell的簡寫形式。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。
② 本例的應用場景
用戶在client(Linux)上通過ssh遠程執行server(Windows)上的命令,比如c: est.bat
註:Linux版自帶ssh Server且默認啟動,具體設置方法請參見google。
2. ssh伺服器的安裝(Windows)
ssh伺服器軟體有許多中,我們這里使用的是免費的freeSSHd。
① 首先從官方站點下載軟體並安裝
② 安裝完成後進入配置界面(Server Status),確認SSH server正在運行狀態
③ 進入Users界面,設定一個訪問的用戶賬戶(比如xut)
這里我們建立一個叫xut的用戶,認證有3種方式可以選擇。從以後通過ssh運行命令的方便(無需輸入密碼)考慮,我們選擇Public key認證方式。選擇Password方式的話,每次訪問需要輸入密碼,此種方式較為繁瑣而且安全性不高。然後開放其Shell許可權。
④ 進入認證界面,確認Public key認證方式屬於激活狀態(選擇Allowed或Required)
此時ssh伺服器端的基本設置已經OK,可進一步進行更加詳細的設置(比如訪問限定等),此處不再介紹。
注意:伺服器端如果有防護牆時應該開發TCP 22號埠最為ssh連接使用。
3. ssh客戶端的設置(Linux)
由於我們的客戶端採用的是Linux,所以不用安裝客戶端軟體,系統自帶的就有。
我們需要在Linux上創建一個共有和私有的密鑰對,私有密鑰放到客戶端(Linux)上,共有密鑰放到伺服器端(Windows)上。在Linux上通過ssh-keygen命令來創建。
[root@localhost ~]# 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): [直接回車]
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:
4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53
其中,/root/.ssh/id_rsa為私有密鑰,/root/.ssh/id_rsa.pub為共有的密鑰。
此時,需要把共有密鑰放到伺服器端(Windows)進行保存,以便於伺服器端進行安全檢查。
我們通過認證界面找到存放共有密鑰的地址(Public key folder)。
如上圖所示,然後在c:Program FilesfreeSSHd目錄下創建以登錄用戶名為名字的文本文件,此處舉例為xut文件。並將/root/.ssh/id_rsa.pub文件中的內容拷貝到c:Program FilesfreeSSHdxut文件中。
至此,客戶端和伺服器端的密鑰設置已經完成,可以通過如下命令進行遠程的命令執行。
ssh [email protected] "c: est.bat"
這條命令將執行伺服器端的C盤下的test.bat文件,並把結果返回,整個操作不需輸入密碼。
4. ssh客戶端的設置(Windows)
由於Windows不附帶ssh的客戶端和伺服器端,我們這里找一個免費的客戶端軟體PuTTY。
PuttY主頁:http://www.chiark.greenend.org.uk/~sgtatham/putty/
各種客戶端的比較:http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
在Putty主頁,我們下載putty.zip(含除了PuTTYtel以外的所有文件),然後解壓會發現一個叫plink.exe的文件,這就是我們的ssh客戶端命令行軟體。
我們首先要成一個共有和私有的密鑰對,使用putty.zip中附帶的PUTTYGEN.exe生成。
啟動PUTTYGEN.exe後可以見到下圖界面,點擊[Generate]即可生成所需密鑰對。
注意:由於是採用隨機演算法生成,需要不停地在對話框上移動滑鼠進度條才會增加,否則將保持不變。
滑鼠在這里不停移動
密鑰生成完畢後,可以把私有密鑰進行保存,為了登錄簡單起見不對私鑰進行加密,提示沒有passphrase選擇忽略即可。假設我們這里把私鑰保存為pri_key.ppk。
我們把公鑰放在freeSSHd端(ssh伺服器端)進行保存,具體保存方法參見【ssh客戶端的設置(Linux)】。
在Windows客戶端,執行如下命令進行ssh連接,並不需要輸入密碼即可通過密鑰進行自動認證。
plink -i pri_key.ppk [email protected] c: est.bat
(此時將執行伺服器端的c: est.bat腳本。)
註:第一次連接時將出現「The server's host key is not cached in the registry… 」提示,我們選擇確定就可以了,以後就不會再出現了。
Ⅲ windows機器 cmd命令下能否使用什麼命令通過ssh連接到遠程lin
Windows提供了一些遠程管理功能,像使用WindowsPowerShell,ServerManager.exe,或一個telnet伺服器,但它並沒有提供原生的SSH(安全外殼)或SecureFTP訪問。不過,好消息是它是相當容易成立SSH和安全FTP(SFTP)伺服器,讓您可以安全地訪問命令提示符和文件的電腦或遠程伺服器示例使用的情況下,包括故障排除,維修,或轉移/共享文件,當你走出公室。你甚至可以決定設置它做SSH隧道,以確保你的Wi-Fi流量使用熱點時。雖然有很多SSH和SFTP伺服器可供選擇,在這里我們將討論freeSSHd以下。freeSSH中是一個SSH和Telnet伺服器,支持普通的shell或命令行SSH訪問,基於SSH的SFTP訪問(使用命令行或GUI客戶端),基於SSH隧道(VPN一樣的功能)。freeSSH中很容易通過一個典型的Windows安裝程序安裝。做雖然確保創建上面的安裝結束時,因為它們所需的加密的私鑰。配置伺服器一旦你打開freeSSHd以下,你會發現一個系統托盤圖標,你可以單擊「打開伺服器設置。如果你沒有在安裝過程中創建的私鑰SSH選項卡並單擊「新建」的關鍵()。否則,你應該做的,為了獲得伺服器運行的是創建一些用戶通過點擊「用戶」選項卡。為了使你的SSH伺服器更加安全,考慮強迫用戶進行身份驗證,通過自己的密碼加上一個私鑰,他們必須在他們的PC連接時,在他們的客戶端程序配置。如果你知道將遠程連接到伺服器-如果它總是會從另一間公室,有一個靜態IP,例如-你也可以考慮遠程IP地址白名單,以提高伺服器的安全性。要做到這一點,只需點擊「主機限制」選項卡,並輸入IP地址。如果您打算使用SFTP連接來傳輸文件,單擊SFTP選項卡,為用戶指定一個默認路徑。測試伺服器在打開你的防火牆上的SSH埠,可以測試伺服器從客戶端程序連接同一台PC上使用本地主機的主機地址或IP地址的PC。您可以使用標準的SSH和SFTP客戶端,如膩子,WinSCP賦予或FileZilla的。打開防火牆為了從其他電腦SSH埠22必須打開Windows防火牆或任何其他你可能已經安裝了個人防火牆訪問SSH伺服器。您可能已提醒有關允許或禁止訪問,當你第一次運行freeSSH中。如果沒有,你就無法通過SSH連接其他電腦,仔細檢查防火牆的設置。如果你打算通過互聯網連接到SSH伺服器,路由器和網路PC連接必須被配置為允許訪問。在路由器中,您可以使用虛擬伺服器或埠轉發設置打開SSH埠22和前瞻性的PC主機的SSH伺服器的IP地址的流量。
Ⅳ win7系統使用freeSSHd創建伺服器,可以連接自己的資料庫嗎
正常情況下,linux 下 sftp 默認都會安裝的, Windows 就沒有了。以下就是安裝過程
首先下載 並且只下載freeSSHd.exe就可以了。
安裝:一路默認就可以了。
設置:(網上資料不全,遇到的問題搜了好久也沒個詳細的信息,所以寫篇博客記錄)
特別說明一下,這里設置為密碼登陸方式,而不用密匙方式。
1 Users:
此外:
sftp [email protected]
[email protected]'s password:
Permission denied, please try again.
[email protected]'s password:
Permission denied, please try again.
密碼明明輸入正確的,可能還會遇到上面的情況, rm -rf ~/.ssh 也不行的話, 就是因為 windons 上運行 freesshd 沒以管理員許可權運行了哦!!!
補充:Permission
denied, please try again. , 有時候上面情況試過了,還會出現這樣的話,看一下管理員許可權默認起來的 ssh ip
是不是對的?如果不對,然後自己改動後點擊應用是沒有什麼卵用的,還是連不上(奇葩bug真多)。這個時候呢,改到你需要的ip後,點擊ok最小化界面,
然後
unload freesshd, 再重新管理員許可權啟動,注意起來後默認的ssh ip 一定要是你需要的。
Ⅳ windows怎麼開ssh服務
1、首先運行OpenSSH的安裝程序 點擊窗口下一步 。
Ⅵ 求問怎麼在自己電腦上搭建ssh伺服器程序
ssh伺服器的安裝(Windows)。
ssh伺服器軟體有許多中,這里使用的是免費的freeSSHd。
①首先從官方站點下載軟體並安裝。
②安裝完成後進入配置界面(Server Status),確認SSH server正在運行狀態。
③進入Users界面,設定一個訪問的用戶賬戶(比如xut)。
這里建立一個叫xut的用戶,認證有3種方式可以選擇。從以後通過ssh運行命令的方便(無需輸入密碼)考慮,選擇Public key認證方式。選擇Password方式的話,每次訪問需要輸入密碼,此種方式較為繁瑣而且安全性不高。然後開放其Shell許可權。
④ 進入認證界面,確認Public key認證方式屬於激活狀態(選擇Allowed或Required)。
此時ssh伺服器端的基本設置已經OK,可進一步進行更加詳細的設置(比如訪問限定等)。
注意:伺服器端如果有防護牆時應該開發TCP 22號埠最為ssh連接使用。
Ⅶ 如何使用ssh登陸windows伺服器
1. ssh簡介以及本例的應用場景
① ssh的簡介
SSH是一個用來替代TELNET、FTP以及R命令的工具包,主要是想解決口令在網上明文傳輸的問題。為了系統安全和用戶自身的權益,推廣SSH是必要的。 SSH是英文Secure Shell的簡寫形式。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。
② 本例的應用場景
用戶在client(Linux)上通過ssh遠程執行server(Windows)上的命令,比如c:\test.bat
註:Linux版自帶ssh Server且默認啟動,具體設置方法請參見google。
2. ssh伺服器的安裝(Windows)
ssh伺服器軟體有許多中,我們這里使用的是免費的freeSSHd。
① 首先從官方站點下載軟體並安裝(http://www.freesshd.com/)
② 安裝完成後進入配置界面(Server Status),確認SSH server正在運行狀態
③ 進入Users界面,設定一個訪問的用戶賬戶(比如xut)
這里我們建立一個叫xut的用戶,認證有3種方式可以選擇。從以後通過ssh運行命令的方便(無需輸入密碼)考慮,我們選擇Public key認證方式。選擇Password方式的話,每次訪問需要輸入密碼,此種方式較為繁瑣而且安全性不高。然後開放其Shell許可權。
④ 進入認證界面,確認Public key認證方式屬於激活狀態(選擇Allowed或Required)
此時ssh伺服器端的基本設置已經OK,可進一步進行更加詳細的設置(比如訪問限定等),此處不再介紹。
注意:伺服器端如果有防護牆時應該開發TCP 22號埠最為ssh連接使用。
3. ssh客戶端的設置(Linux)
由於我們的客戶端採用的是Linux,所以不用安裝客戶端軟體,系統自帶的就有。
我們需要在Linux上創建一個共有和私有的密鑰對,私有密鑰放到客戶端(Linux)上,共有密鑰放到伺服器端(Windows)上。在Linux上通過ssh-keygen命令來創建。
[root@localhost ~]# 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): [直接回車]
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:
4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53
其中,/root/.ssh/id_rsa為私有密鑰,/root/.ssh/id_rsa.pub為共有的密鑰。
此時,需要把共有密鑰放到伺服器端(Windows)進行保存,以便於伺服器端進行安全檢查。
我們通過認證界面找到存放共有密鑰的地址(Public key folder)。
如上圖所示,然後在c:\Program Files\freeSSHd目錄下創建以登錄用戶名為名字的文本文件,此處舉例為xut文件。並將/root/.ssh/id_rsa.pub文件中的內容拷貝到c:\Program Files\freeSSHd\xut文件中。
至此,客戶端和伺服器端的密鑰設置已經完成,可以通過如下命令進行遠程的命令執行。
ssh [email protected] "c:\test.bat"
這條命令將執行伺服器端的C盤下的test.bat文件,並把結果返回,整個操作不需輸入密碼。
4. ssh客戶端的設置(Windows)
由於Windows不附帶ssh的客戶端和伺服器端,我們這里找一個免費的客戶端軟體PuTTY。
PuttY主頁:http://www.chiark.greenend.org.uk/~sgtatham/putty/
各種客戶端的比較:http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
在Putty主頁,我們下載putty.zip(含除了PuTTYtel以外的所有文件),然後解壓會發現一個叫plink.exe的文件,這就是我們的ssh客戶端命令行軟體。
我們首先要成一個共有和私有的密鑰對,使用putty.zip中附帶的PUTTYGEN.exe生成。
啟動PUTTYGEN.exe後可以見到下圖界面,點擊[Generate]即可生成所需密鑰對。
注意:由於是採用隨機演算法生成,需要不停地在對話框上移動滑鼠進度條才會增加,否則將保持不變。
滑鼠在這里不停移動
密鑰生成完畢後,可以把私有密鑰進行保存,為了登錄簡單起見不對私鑰進行加密,提示沒有passphrase選擇忽略即可。假設我們這里把私鑰保存為pri_key.ppk。
我們把公鑰放在freeSSHd端(ssh伺服器端)進行保存,具體保存方法參見【ssh客戶端的設置(Linux)】。
在Windows客戶端,執行如下命令進行ssh連接,並不需要輸入密碼即可通過密鑰進行自動認證。
plink -i pri_key.ppk [email protected] c:\test.bat
(此時將執行伺服器端的c:\test.bat腳本。)
註:第一次連接時將出現「The server's host key is not cached in the registry…
Ⅷ 在windows環境下通過帳號密碼SSH登錄堡壘機,之後telnet到網路設備,通過命令交互對設備
1. 什麼是SSH
SSH 為建立在應用層和傳輸層基礎上的安全協議。SSH 是目前較可靠,專為遠程登錄會話和其他網路服務提供安全性的協議。SSH是每一台Linux電腦的標准配置,但是在windows系統中默認是沒有安裝SSH的,需要安裝SSH相關服務端軟體,比如FreeSSHD。
2. SSH可以用來做什麼
SSH可以用於遠程登錄主機,登錄方式通常有兩種:口令登錄和公鑰登錄
一:口令登錄:通過在服務端設定的用戶名和密碼進行登錄,每次都登錄都需要填寫密碼
二:公鑰登錄:通過一對公鑰和私鑰登錄,公鑰存放在服務端私鑰存放在客戶端,在登錄時服務端向客戶端發生一個隨機字元串,然後客戶端通過私鑰先進行加密然後發生到服務端,在服務端接受和用公鑰進行解密,然後匹配是否正確解密來驗證登錄,注意:存在在服務端的公鑰名稱和用戶名一致,已區分不同用戶不同的公鑰;這樣每次就可以直接用公鑰登錄省去了密碼的繁瑣。
SSH可以用戶服務端和客戶端之間雙向文件傳輸
3. SharpSSH與SSH服務端FreeSSHD
SharpSSH是一個用C#實現的SSH客戶端組件,用戶可以根據需要修改使用改組件已滿足自己的需求,SharpSSH介紹和組件下載網站:http://sharpssh2.codeplex.com/,也可以在這里下載。
注意:在官網下載SharpSSH會因為主機為安裝Mono而出現Mono.Security.dll的引用錯誤,只需要下載Mono.Security.dll重新引用即可。
我在Windows7 VS2012的環境下測試官網下載的SharpSSH項目升級成功,解決方案如下:
其中有兩個項目:Examples,SharpSSH顧名思義,Examples是使用示例,SharpSSH就是真正的實現項目,設置Examples為啟動項,運行效果如下:
可以看到,示例為我們提供了16個功能項,再次我們需要測試遠程登錄和文件傳輸,使用第13, 和16項測試即可,同時也會用到第5項生成公鑰私鑰對;
客戶端SharpSSH已經實現了,接下來在Windows系統中就需要安裝客戶端了,這里選擇FreeSSHD作為客戶端,官網下載地址:http://www.freesshd.com/?ctt=download或這里:http://download.csdn.net/detail/dangercheng/6804861
下載下來直接下一步下一步安裝,安裝完成後運行會提示你是否生成Key選擇是即可,同時會安裝FreeSSHDService服務,選擇關閉該服務;
此時可以看到支持telnet和SSH服務,且都關閉,到此步客戶端服務端都已經准備就緒,下面就進行我們的登錄測試和文件傳輸測試吧;
4. 遠程登錄執行命令
上面提過,登錄有兩種方式,口令登錄和公鑰登錄,先介紹口令登錄吧;
口令登錄:即在服務端freeSSHd上創建一個用戶名和密碼,使用此密碼口令登錄
首先在freeSSHd上的Users選項中點擊Add彈出添加用戶界面,然後Login填寫用戶名,authorization選擇Password stored as SHA1 hash 然後填寫密碼和重復密碼,勾選該用戶可用服務,如下圖,創建了用戶名和密碼都是test:
然後我們選擇SSH項,將Use new console engine項的勾選去掉已防止中午亂碼,如圖:
選擇確定即可創建成功,然後回到主界面我們打開SSH服務
如上圖所示即表示SSH服務已經成功開啟;但是有可能會錯誤:常見原因是地址已使用,這是埠號22已經被使用造成的,關閉該埠的進程即可。
接下來我們運行我們的sharpSSH進行登錄測試吧。
我們選擇第13項,然後輸入遠程地址I(由於服務端就在本機所以是127.0.0.1),然後不選擇公鑰登錄,然後輸入密碼,連接成功,執行date命令查詢當前時間:
現在我們測試公鑰登錄:
公鑰登錄需要先生成公鑰私鑰對,我們選擇第5項KeyGen來生成,命名為test(和用戶名一致),Sig Type選擇dsa, 然後Comment為空彈出窗口輸入passphrase我們不輸入直接選擇ok,這樣就在sharpSSH的bin\Debug目錄下生成了我們的test的公鑰私鑰兩個文件。如圖:
生成了公鑰test.pub和私鑰test兩個文件。然後將公鑰文件test.pub放到freeSSHd指定的公鑰文件夾目錄:
也就是C:\Program Files\freeSSHd\這個目錄下,並去掉後綴.pub,然後修改test用戶的authorization選擇Public Key如圖:
接下來再測試:
5. 傳輸文件
首先我們修改服務端文件位置:
這樣我們服務端的默認位置就是我們在freeSSHd下面自己添加的sftpFile的目錄了,我們在裡面放一個圖片test.jpg,現在我們要將這個圖片傳到我們sharpSSH的目錄頁就是bin\Debug目錄下並改名為testClient.jpg:
可以看見傳輸的速度還是很快的93k0秒完成,有興趣的可以試試大文件的傳輸,到此關於SSH的登錄和文件傳輸的測試完畢,當然SSH還有其他的很多很多的強大功能,這里不能一一列舉測試,有興趣自己取試試。