平時常用putty運行ssh client來連虛擬機上的linux,,這實在是太方便了,而現(xiàn)在需要遠程登陸到的windows里,雖然telnet也行,,但太舊也不安全,于從網(wǎng)上找了遍用ssh連windows方法,,這需要在windows上安裝openssh server,,但令人興奮的是,它竟然自帶了ls,、mkdir,、rm,、chmod、chown等命令,,實在是好得不得了,,具體設(shè)置過程和遇到的問題如下:
1.下載OpenSSH
在這里下載
2.安裝
安裝很簡單,就像其它windows下的軟件一樣,,雙擊即可,。安裝到大半,會有提示框彈出,,說“必須要設(shè)置../etc/passwd文件才可以正常運作openssh,,詳情可以參閱readme.txt或quickstart.txt文件。”不用管它,,按確定繼續(xù)完成安裝,。安裝完后可以看到quickstart.txt文件的內(nèi)容
3.配置
第一、打開一個ms-dos終端,,進入C:\Program Files\OpenSSH\bin目錄,。(安裝完openssh后,發(fā)現(xiàn)多了幾個在linux中常用的命令,,如:ls,、mkdir、rm,、chmod,、chown等,很有親切感?。?/SPAN>
第二,、將計算機上的組導(dǎo)入group文件中。這里分兩種情況,,第一種是本地,,第二種是在域中。分別運行-l和-d參數(shù),。如果想將兩種組都導(dǎo)入,,可以先運行-l的參數(shù)再運行-d參數(shù)的命令。
mkgroup -l >> ..\etc\group 這是加入本地組的命令,。
mkgroup -d >> ..\etc\group 這是加入域組的命令,。
原文:
Use mkgroup to create a group permissions file. For local groups, use the "-l" switch. For domain groups, use the "-d" switch.
For both domain and local, it is best to run the command twice (remember to use >>, not >). If you use both, make sure to edit the file to remove any duplicate entires.
第三、將計算機的用戶與其密碼導(dǎo)入passwd文件中,。與上面的組一樣,,也是分本地和域兩種情況。如果沒有該文件或沒有導(dǎo)入用戶的信息,。作為server的話,,將不能被登陸,,因為沒有用戶嘛!
mkpasswd -l >> ..\etc\passwd 這是加入本地用戶的命令,。
mkpasswd –d >> ..\etc\passwd 這是加入域用戶的命令,。
原文:
Use mkpasswd to add authorized users into the passwd file. For local users, use the "-l" switch. For domain users, use the "-d" switch.
For both domain and local, it is best to run the command twice (remember to use >>, not >). If you use both, make sure to edit the file to remove any duplicate entires.
通常我們個人電腦都沒有用到域組,所以只要運行如下兩條命令即可,。(記得在OpenSHH/bin目錄下進行,,也可以自行設(shè)置PATH路徑)
mkgroup -l >> ..\etc\group
mkpasswd -l >> ..\etc\passwd
4.啟動OpenSSH server
net start opensshd
關(guān)閉命令是:net stop opensshd
5.使用
ssh -p端口用戶名@對方主機IP
sftp -p端口用戶名@對方主機IP
scp -p端口用戶名@對方主機IP:文件路徑.
注意:端口默認是22,所以一般不用加-p參數(shù),。要更改端口可以在etc/sshd_config中更改,。
注意:cmd下改變改變位置的方式是:C:\> D:或E:
6.出現(xiàn)的問題
輸入“ssh -p端口用戶名@對方主機IP”后出現(xiàn)如下警告提示:
“Could not create directory '/home/Administrator/.ssh”不過依然可以正常登陸,而網(wǎng)上的說法是:這是由于目錄/home/Administrator/.ssh不存在造成的,,在Windows 2000 and XP中,,/home默認是在C:\Documents and Settings;在Windows NT 4.0中,,/home默認是在C:\WINNT\Profiles,,但我安裝完查看了注冊表,/home目錄的默認值卻為
“C:\Documents and Settings\Administrator\「開始」菜單”解決辦法如下:
修改注冊表,,把它改為D:\svn\openssh\home(home目錄也可以放在其它地方,,隨你喜歡)
運行(R)里輸入regedit,打開注冊表,,然后找到如下項,,修改之即可。
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/home]
"native"="D:\\svn\\OpenSSH\\home"
"flags"=dword:0000000a
把"native"改成你自己的/home所在目錄,,此目錄就是默認的登陸目錄,,比如用戶名:Administrator那你進入的目錄是/home/Administrator(注:更改目錄后要建立對應(yīng)的目錄,并且用戶名的目錄也要創(chuàng)建)
修改完了注冊表之后,,在D:\svn\OpenSSH目錄上創(chuàng)建home目錄,、用戶目錄以adminstrator為例
cd D:\svn\OpenSSH
md home
md home\Administrator
md home\Administrator\.ssh //注意,此目錄只能在命令行下生成,,不信你試下
重啟服務(wù)器,,檢查配置后運行是否正常,這時你可能會發(fā)現(xiàn),,以adminstrator用戶登陸,,密碼總是出錯,原因是windows默認adminstrator用戶的密碼為空,,密碼為空的用戶是無法登陸的,如果想實現(xiàn)無密碼自動登陸,,那下面的密碼鑰機制會說到,,因此這兒需要為administartor設(shè)置密碼,,假如設(shè)了密碼還是不行,怎么辦,?別緊張,,先在命令行里輸入lusrmgr.msc打開本地用戶和組,雙擊administrator用戶,,查看常規(guī)中的“用戶下次登陸時須更改密碼(M)”是不是選上了,,如果選上了,那就將其取消,,選取“密碼永不過期”這一項,,一切問題就能解決,這樣之后還不行的話,,那我也幫不了你了,,那你就試下將防火墻之類的關(guān)掉。
還要說明一下的是:當(dāng)用戶登陸成功后,,會在/home/[用戶名]/.ssh目錄下行成一個known_hosts文件,,里面包存的是公鑰的認證內(nèi)容,但奇怪的是我發(fā)現(xiàn)只有administrator/.ssh目錄下才有而已,,這個我就不知道了,。
7.設(shè)置基于密鑰認證的方式訪問,可實現(xiàn)自動登陸,。(密鑰認證以前實現(xiàn)過,,下面的內(nèi)容我就不具體實踐了)
----------------------------------------------------------
1).創(chuàng)建一個Windows用戶ssh專用來SSH遠程登陸。
可以在本地安全策略中設(shè)置禁止ssh本地登陸,,不過這樣以來單機調(diào)試就不方便了,。
----------------------------------------------------------
2).生成用戶信息。這里是生成了所有用戶的信息,,當(dāng)然只指定用戶ssh也行
.\bin\mkgroup -l >> .\etc\group
.\bin\mkgroup -d >> .\etc\group
.\bin\mkpasswd -l >> .\etc\passwd
.\bin\mkpasswd -d >> .\etc\passwd
----------------------------------------------------------
3).生成用戶ssh的home目錄
mkdir home
cd home
mkdir ssh
cd ssh
mkdir .ssh
----------------------------------------------------------
4).修改cygwin環(huán)境默認的home目錄
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2\/home]
"native"="C:\\Program Files\\OpenSSH\\home"
"flags"=dword:0000000a
----------------------------------------------------------
5).生成密鑰
cd bin
mkdir keys
ssh-keygen -t rsa -b 2048 -f keys\rsa2048 -C "This is passphrase hint" -N "This is passphrase"
mkdir keys\.ssh
cat rsa2048.pub > keys\.ssh\authorized_keys
----------------------------------------------------------
6).將上面生成私轉(zhuǎn)為SSH客戶端可使用格式,,這里用PuTTY,可用PuTTYgen轉(zhuǎn)為PuTTY用的PPK格式
----------------------------------------------------------
7).將OpenSSH設(shè)置為只接受密鑰認證,。
這里額外開了sftp服務(wù),。另外,StrictModes no選項將告訴OpenSSH不檢查用戶ssh的home目錄的權(quán)限設(shè)置
Protocol 2
Port 22
HostKey /etc/ssh_host_rsa_key
PermitRootLogin no
PermitEmptyPasswords no
StrictModes no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
#IgnoreUserKnownHosts yes
PasswordAuthentication no
UsePAM no
UsePrivilegeSeparation no
MaxStartups 10:30:60
Subsystem sftp /usr/sbin/sftp-server
----------------------------------------------------------
8).設(shè)置路由器NAT和軟件防火墻
NAT設(shè)置了映射22號端口的TCP包,。
軟件防火墻設(shè)置允許C:\Program Files\OpenSSH\usr\sbin\sshd.exe偵聽TCP port 22,。
----------------------------------------------------------
9).基本上差不多了,要啟用或停止OpenSSH服務(wù)可
net start opensshd
net stop opensshd
在services.msc里啟用或停止也可
----------------------------------------------------------
10). PuTTY作中端還不錯,,就是中文不好辦,。
要sftp的話,用WinSCP和FileZilla都行,。
WinSCP和FileZilla看及進入中文目錄名/文件名都沒問題,,但拷貝等操作報服務(wù)端找不到文件錯誤,,
也許和OpenSSH for Windows帶的sftp-server.exe版本低了有關(guān)吧(3.x的樣子)
注意cygwin環(huán)境下將Windows各磁盤映射為/cygdrive/