之前都是用的Ftp,今天有兩個(gè)客戶(hù)要求用Sftp沒(méi)用過(guò),今天研究了一下,記錄備忘
SFTP其實(shí)就是加密的FTP 可以通過(guò)ssh密匙 免密碼連接
- 系統(tǒng):Ubuntu 16.04
- 軟件:openssh
安裝openssh
sudo apt-get install openssh-server
為SFTP訪問(wèn)創(chuàng)建用戶(hù)組,便于管理權(quán)限
sudo addgroup sftp-users
創(chuàng)建用戶(hù)加入組,不允許登錄系統(tǒng)
sudo adduser alice
sudo usermod -G sftp-users -s /bin/false alice
創(chuàng)建SSH用戶(hù)組,并把管理員加入到該組(注意usermod中的-a參數(shù)的意思是不從其他用戶(hù)組用移除)
sudo addgroup ssh-users
sudo usermod -a -G ssh-users root
準(zhǔn)備“監(jiān)獄”的根目錄及共享目錄。這里解釋一下,“監(jiān)獄”的根目錄必須滿足以下要求:所有者為root,其他任何用戶(hù)都不能擁有寫(xiě)入權(quán)限。因此,為了讓SFTP用戶(hù)能夠上傳文件,還必須在“監(jiān)獄”根目錄下再創(chuàng)建一個(gè)普通用戶(hù)能夠?qū)懭氲墓蚕砦募夸洝榱吮阌诠芾韱T通過(guò)SFTP管理上傳的文件,我把這個(gè)共享文件目錄配置為:由admin所有,允許sftp-users讀寫(xiě)。這樣,管理員和SFTP用戶(hù)組成員就都能讀寫(xiě)這個(gè)目錄了。
sudo mkdir /home/sftp_root
sudo mkdir /home/sftp_root/shared
sudo chown root:sftp-users /home/sftp_root/shared
sudo chmod 770 /home/sftp_root/shared
修改SSH配置文件
sudo vi/etc/ssh/sshd_config
文件底部添加
AllowGroups ssh-users sftp-users #只允許ssh-uers及sftp-users組的用戶(hù)通過(guò)SSH訪問(wèn)系統(tǒng)
Match User sftp-ly #針對(duì)單個(gè)用戶(hù)設(shè)置
ChrootDirectory /sftp/sftp_root_ly/ # 根目錄
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
Match User sftp-siemens
ChrootDirectory /sftp/sftp_root_siemens/
AllowTcpForwarding no
X11Forwarding no
ForceCommand internal-sftp
# 針對(duì)組進(jìn)行額外設(shè)置
Match Group sftp-users
.....
可以針對(duì)組或用戶(hù),額外增加一些設(shè)置:將“/home/sftp_root”設(shè)置為該組用戶(hù)的系統(tǒng)根目錄(因此它們將不能訪問(wèn)該目錄之外的其他系統(tǒng)文件);禁止TCP Forwarding和X11 Forwarding;強(qiáng)制該組用戶(hù)僅僅使用SFTP
到這sftp就算配置完成了
驗(yàn)證
- linux
隨便找一臺(tái)linux主機(jī)
sftp root@172.16.1.100
如果提示輸密碼,連接成功可以上傳文件 表示成功!
配置ssh免密登錄
- 生成密匙
在服務(wù)器上執(zhí)行以下命令生成密匙
ssh-keygen -t rsa
默認(rèn)生成的路徑是 /root/.ssh
- id_rsa 是私鑰 一般用于客戶(hù)端
- id_rsa.pub 是公鑰 一般用于服務(wù)器端
服務(wù)器上注冊(cè)公鑰
在/root/.ssh 目錄下
cat id_rsa.pub >> authorized_keys
將私鑰放到客戶(hù)端
- linux
scp id_rsa root@172.16.1.11:/root/.ssh
也可以直接vim打開(kāi)后復(fù)制私鑰后在客戶(hù)端.ssh文件夾下建立同名文件黏貼私鑰
- windows
直接通過(guò)復(fù)制黏貼獲取私鑰 id_rsa
免密連接SFTP
- linux
sftp root@172.16.1.100
不用輸密碼能直接連接成功表示成功
- Windows
打開(kāi)WinSCP客戶(hù)端-編輯站點(diǎn)-高級(jí)-驗(yàn)證-添加私鑰


添加私鑰文件根據(jù)提示 將openssh格式的私鑰轉(zhuǎn)換為putty格式
?。?!不用輸入密碼,能連接成功??!成功啦!
服務(wù)器端提供多用戶(hù)服務(wù)
如果要在SFTP服務(wù)器上建立多個(gè)用戶(hù) 分別提供服務(wù)
只需要在 相應(yīng)用戶(hù)的 /home/用戶(hù)/.ssh 下放置正確的公鑰并注冊(cè)
即可用相應(yīng)的私鑰 來(lái)連接
一個(gè)共享提供多個(gè)客戶(hù)端連接
一個(gè)sftp用戶(hù)共享提供多個(gè)客戶(hù)端連接
只需要在相應(yīng)用戶(hù)的.ssh文件下的 authorized_keys 文件夾內(nèi)添加多個(gè)公鑰即可
cat id_rsa.pub >> authorized_keys 多來(lái)幾次就行