1、linux伺服器使用SFTP連接後時間有問題
系統時間和硬體時間不匹配
設置下即可
hwclock --hctosys
hwclock --systohc
選擇一行設置下 主要看你想設置那個時間為准
2、伺服器把ssh的埠號改了,在linux終端怎麼用sftp連接
從技術角度來分析,幾個要求:
1、從安全方面看,sftp會更安全一點
2、線上伺服器提供在線服務,對用戶需要控制,只能讓用戶在自己的home目錄下活動
3、用戶只能使用sftp,不能ssh到機器進行操作
提供sftp服務,可以用系統自帶的internal-sftp,也可以使用vsftpd,這里需求不多,直接選用internal-sftp。
限制用戶只能在自己的home目錄下活動,這里需要使用到chroot,openssh 4.8p1以後都支持chroot,我現在用的是CentOS 6.3,自帶的openssh已經是5.3p1,足夠了。
可以輸入:
# ssh -V
來查看openssh的版本,如果低於4.8p1,需要自行升級安裝,不在這里具體介紹了。
假設,有一個名為sftp的組,這個組中的用戶只能使用sftp,不能使用ssh,且sftp登錄後只能在自己的home目錄下活動
1、創建sftp組
# groupadd sftp
2、創建一個sftp用戶,名為mysftp
# useradd -g sftp -s /bin/false mysftp
# passwd mysftp
3、sftp組的用戶的home目錄統一指定到/data/sftp下,按用戶名區分,這里先新建一個mysftp目錄,然後指定mysftp的home為/data/sftp/mysftp
# mkdir -p /data/sftp/mysftp
# usermod -d /data/sftp/mysftp mysftp
4、配置sshd_config
編輯 /etc/ssh/sshd_config
# vim +132 /etc/ssh/sshd_config
找到如下這行,並注釋掉
Subsystem sftp /usr/libexec/openssh/sftp-server
添加如下幾行
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory /data/sftp/%u
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
解釋一下添加的幾行的意思
Subsystem sftp internal-sftp
這行指定使用sftp服務使用系統自帶的internal-sftp
Match Group sftp
這行用來匹配sftp組的用戶,如果要匹配多個組,多個組之間用逗號分割
當然,也可以匹配用戶
Match User mysftp
這樣就可以匹配用戶了,多個用戶名之間也是用逗號分割,但我們這里按組匹配更靈活和方便
ChrootDirectory /data/sftp/%u
用chroot將用戶的根目錄指定到/data/sftp/%u,%u代表用戶名,這樣用戶就只能在/data/sftp/%u下活動,chroot的含義,可以參考這里:http://www.ibm.com/developerworks/cn/linux/l-cn-chroot/
ForceCommand internal-sftp
指定sftp命令
AllowTcpForwarding no
X11Forwarding no
這兩行,如果不希望該用戶能使用埠轉發的話就加上,否則刪掉
5、設定Chroot目錄許可權
# chown root:sftp /data/sftp/mysftp
# chmod 755 /data/sftp/mysftp
錯誤的目錄許可權設定會導致在log中出現」fatal: bad ownership or modes for chroot directory XXXXXX」的內容
目錄的許可權設定有兩個要點:
1、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止的目錄擁有者都只能是root
2、由ChrootDirectory指定的目錄開始一直往上到系統根目錄為止都不可以具有群組寫入許可權
所以遵循以上兩個原則
1)我們將/data/sftp/mysftp的所有者設置為了root,所有組設置為sftp
2)我們將/data/sftp/mysftp的許可權設置為755,所有者root有寫入許可權,而所有組sftp無寫入許可權
6、建立SFTP用戶登入後可寫入的目錄
照上面設置後,在重啟sshd服務後,用戶mysftp已經可以登錄,但使用chroot指定根目錄後,根應該是無法寫入的,所以要新建一個目錄供mysftp上傳文件。這個目錄所有者為mysftp,所有組為sftp,所有者有寫入許可權,而所有組無寫入許可權
# mkdir /data/sftp/mysftp/upload
# chown mysftp:sftp /data/sftp/mysftp/upload
# chmod 755 /data/sftp/mysftp/upload
7、重啟sshd服務
# service sshd restart
到這里,mysftp已經可以通過sftp客戶端登錄並可以上傳文件到upload目錄。
如果還是不能在此目錄下上傳文件,提示沒有許可權,檢查SElinux是否關閉,可以使用如下指令關閉SElinux
關於Linux命令的介紹,看看《linux就該這么學》,具體關於這一章地址3w(dot)linuxprobe/chapter-02(dot)html
修改/etc/selinux/config文件中的SELINUX="" 為 disabled ,然後重啟。或者
# setenforce 0
3、如何用sftp上傳文件到linux伺服器上
伺服器上安裝vsftpd就是ftp服務,並開啟允許root賬戶
本地使用FlashFXP這樣的客戶端上傳;
伺服器上安裝vsftpd並開啟root賬戶允許
(非必要不建議開啟root賬戶)
yum -y install vsftpd
sed -i 's/root/#root/' /etc/vsftpd/ftpusers
sed -i 's/root/#root/' /etc/vsftpd/user_list
/etc/init.d/vsftpd restart
本地使用flashfxp連接
4、如何在linux下配置ssh和sftp使用不同的埠號?
1、兩個deamon
要實現ssh和sftp分離,分別監聽不同的埠,可以通過創建兩個『/usr/sbin/sshd』後台程序,一個監聽22埠(ssh),一個監聽20022埠(sftp),為了區分ssh和sftp服務的後台程序,這里將ssh服務的後台程序保持為/usr/sbin/sshd,而將sftp服務的後台程序改為/usr/sbin/sftpd。/usr/sbin/sftpd是/usr/sbin/sshd的一個鏈接,其內容完全相同(ln
-sf /usr/sbin/sshd /usr/sbin/sftpd)。
2、兩個service
SLES12使用systemd管理系統服務,ssh服務對應/usr/lib/systemd/system/sshd.service文件,實現sftp服務時可以將/usr/lib/systemd/system/sshd.service
復制到
/etc/systemd/system/sftpd.service,然後修改sftpd.service文件內容。(使用修改好的sftpd.service文件即可)
3、其他文件
系統的ssh服務是通過安裝openssh實現的,可以通過rpm -ql openssh查看該rpm包含哪些文件。總結實現ssh和sftp分離的相關的文件有:
ssh服務 sftp服務
/usr/lib/systemd/system/sshd.service /etc/systemd/system/sftpd.service
(通過修改/usr/lib/systemd/system/sshd.service文件得到)
/etc/pam.d/sshd /etc/pam.d/sftpd (通過復制 /etc/pam.d/sshd文件得到)
/etc/ssh/sshd_config /etc/ssh/sftpd_config (通過復制/etc/ssh/sshd_config文件得到)
/usr/sbin/rcsshd /usr/sbin/rcsftpd (ln -sf /usr/sbin/service /usr/sbin/rcsftpd)
/usr/sbin/sshd /usr/sbin/sftpd (ln -sf /usr/sbin/sshd /usr/sbin/sftpd)
/etc/sysconfig/ssh /etc/sysconfig/sftp (通過修改/etc/sysconfig/ssh文件得到)
至此,我們已經實現了兩個服務。
但是,ssh服務和sftp服務並沒有真正的分離,此時已然可以通過22號埠使用ssh服務和sftp服務,而新開的20022埠也可以使用ssh服務(ssh
-p 20022 username@serverip )和sftp服務(sftp -o Port=20022
username@serverip )。
4、關閉22號埠下的sftp服務
編輯/usr/sbin/sshd的配置文件/etc/ssh/sshd_config文件,將Subsystem參數注釋掉,然後重啟sshd
同時也可以設置可訪問22號埠的用戶白名單:
編輯/etc/ssh/sshd_config文件,設置AllowGroups參數(假設設置為AllowGroups sshonly),限制僅AllowGroups組內的用戶可通過22號埠ssh登錄系統(對於需要ssh登錄系統的用戶可通過usermod -A sshonly <username>將其加入到AllowGroups組內)
5、「關閉20022號埠下的ssh服務」
sftp作為一個子服務,它的開啟依賴於ssh服務,因此不能從本質上關閉ssh服務而只開啟sftp服務。
可以用以下方式來規避:
/usr/sbin/sftpd的配置文件/etc/ssh/sftpd_config中包含Subsystem參數配置(推薦使用Subsystem sftp internal-sftp -l INFO -f AUTH)
/etc/ssh/sftpd_config中包含AllowGroups參數(假設為AllowGroups sftponly),限制僅AllowGroups組內的用戶可以訪問20022埠
將AllowGroups組內的用戶的shell改為/bin/false(usermod -s /bin/false <username>),使AllowGroups組內的用戶僅能sftp登錄系統(如果一個用戶即需要ssh,又需要sftp,則不能將其shell改為/bin/false)
6、用戶白名單配置
配置之後,需將系統內需要ssh訪問系統的用戶加入到sshonly組內,需將系統內需要sftp訪問系統的用戶加入到sftponly組,同時需要ssh和sftp的用戶則sshonly和sftponly組都要加入。
7、 重啟ssh服務和sftp服務,並設置開機啟動
service sshd restart
service sftpd restart
5、怎麼開啟linux伺服器的sftp服務
可以按照如下方式進行設置:
1、創建sftp組,groupadd sftp,創建完成之後使用cat /etc/group命令組的信息。
2、創建一個sftp用戶mysftp並加入到創建的sftp組中,同時修改mysftp用戶的密碼,useradd -g sftp -s /bin/false mysftp,passwd mysftp 。
3、新建/data/sftp/mysftp目錄,並將它指定為mysftp組用戶的home目錄,mkdir -p /data/sftp/mysftp,usermod -d /data/sftp/mysftp mysftp。
4、編輯配置文件/etc/ssh/sshd_config,vi /etc/ssh/sshd_config,將如下這行用#符號注釋掉。
5、設置Chroot目錄許可權,chown root:sftp /data/sftp/mysftp,chmod 755 /data/sftp/mys。
6、新建一個目錄供stp用戶mysftp上傳文件,這個目錄所有者為mysftp所有組為sftp,所有者有寫入許可權所有組無寫入許可權,mkdir /data/sftp/mysftp/upload,chown mysftp:sftp /data/sftp/mysftp/upload,chmod 755 /data/sftp/mysftp/upload。
7、關閉selinux並重啟sshd服務,然後測試。
8、在其他伺服器上進行驗證,sftp 用戶名@ip地址。
1、sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。可以為傳輸文件提供一種安全的網路的加密方法。sftp 與 ftp 有著幾乎一樣的語法和功能。SFTP 為 SSH的其中一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。
2、其實在SSH軟體包中,已經包含了一個叫作SFTP(Secure File Transfer Protocol)的安全文件信息傳輸子系統,SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(埠號默認是22)來完成相應的連接和答復操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。
6、linux下shell腳本用sftp傳文件,但是要通過代理伺服器出去。怎麼配置
這個是伺服器和程序方面的問題哦, 不過可以幫助搞定一下的啊 , 能看一下wo的網名嗎?在線的幫解決一下 啊
7、windows 下cmd 通過sftp命令 怎樣訪問linux伺服器下的文件目錄並下載,為什麼我的sftp用不了
裝了openssh才會有sftp命令
你還是裝個支持sftp的客戶端吧,比如Cuteftp pro、SecureFX之類的
8、linux 怎樣連sftp伺服器
SFTP本身沒有單獨的守護進程,它必須使用sshd守護進程(埠號默認是22)來完成相應的連接操作,所以從某種意義上來說,SFTP並不像一個伺服器程序,而更像是一個客戶端程序。
啟動ssh服務、sftp服務
執行命令 /etc/init.d/sshd start 注意這里需要在絕對路徑下執行sshd start。
9、Linux中使用shell腳本訪問sftp伺服器,密鑰不會用
密鑰用於建立SSH互信環境,本地公鑰需要分發到遠端伺服器目錄,可實現本地主機到專遠端SFTP伺服器的無訪問.
1. 生成密鑰對,取得本地公鑰,如:id_dsa.pub
2. 登錄到遠端SFTP伺服器用戶HOME目錄的.ssh文件夾
3. 將id_dsa.pub的內容追加到遠端服屬務器.ssh/autorized_keys文件尾部並保存
4. 嘗試與本地主機用戶SFTP到遠程伺服器: sftp user@server_addr
10、linux下 如何寫一個shell 使用sftp發送文件到指定伺服器 每次要手工輸入
你可以來試試下源面的方法,把sftp內的操作都寫到EOF裡面
sftp -oPort=$PORT $USERNAME@$IP <<EOF
cd $FTP2DIR
mkdir $DATA_DATE
cd $DATA_DATE
put $EXPORT_LOCAL_DIR/$data_file_name
put $EXPORT_LOCAL_DIR/$verf_file_name
exit
close
bye
EOF