十分鐘學(xué)會(huì)SSH+SFTP操作終端,告別XShell
1.前言
在Mac下登陸遠(yuǎn)程服務(wù)器并沒有Windows那么方便的使用XShell,相比較而言,在Mac下更多的是依賴終端輸入SSH命令登錄遠(yuǎn)程服務(wù)器。
使用SSH命令行的好處就是可以近距離接觸底層,用的越多,用的越溜,對(duì)SSH的原理就越了解。相反,使用現(xiàn)成的SSH工具(PuTTY、XShell),我們其實(shí)并不會(huì)有涉及使用ssh命令的機(jī)會(huì),對(duì)大多數(shù)人而言,怕是只知道最基本的ssh root@ip。
本文將帶大家了解ssh的原理與使用技巧,幫助更多終端愛好者更方便更隨心所欲的使用終端。
2.SSH是什么
SSH服務(wù)其實(shí)是一個(gè)守護(hù)進(jìn)程(demon),系統(tǒng)后臺(tái)會(huì)監(jiān)聽客戶端的連接,ssh服務(wù)端的進(jìn)程名為sshd,負(fù)責(zé)實(shí)時(shí)監(jiān)聽客戶端的請(qǐng)求(IP 22端口),包括公共秘鑰等交換等信息。SSH服務(wù)端由2部分組成:openssh(提供ssh服務(wù))、openssl(提供加密的程序)。
3.對(duì)稱加密和非對(duì)稱加密
在學(xué)習(xí)SSH的工作機(jī)制之前,我們需要了解對(duì)稱加密和非對(duì)稱加密的原理。
對(duì)稱加密
所謂對(duì)稱加密,是采用對(duì)稱密碼編碼技術(shù)的加密措施,它的特點(diǎn)是文件加密和解密都是使用相同的密鑰。
這種方法在密碼學(xué)中叫做對(duì)稱加密算法,對(duì)稱加密算法使用起來簡(jiǎn)單快捷,密鑰較短,且破譯困難,除了數(shù)據(jù)加密標(biāo)準(zhǔn)(DES),另一個(gè)對(duì)稱密鑰加密系統(tǒng)是國(guó)際數(shù)據(jù)加密算法(IDEA),它比DES的加密性好,而且對(duì)計(jì)算機(jī)功能要求也沒有那么高。
非對(duì)稱加密
與對(duì)稱加密算法不同,非對(duì)稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。
公開密鑰與私有密鑰是一對(duì),如果用公開密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公開密鑰才能解密。
因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。
4.SSH如何工作
了解了對(duì)稱加密和非對(duì)稱加密是什么之后,再來了解SSH如何使用非對(duì)稱加密技術(shù),大致流程如下:
在服務(wù)器啟動(dòng)的時(shí)候會(huì)產(chǎn)生一個(gè)密鑰(也就是768bit公鑰),本地的ssh客戶端發(fā)送連接請(qǐng)求到ssh服務(wù)器,服務(wù)器檢查連接點(diǎn)客戶端發(fā)送的數(shù)據(jù)和IP地址,確認(rèn)合法后發(fā)送密鑰(768bits公鑰)給客戶端,此時(shí)客戶端將本地私鑰(256bit)和服務(wù)器的公鑰(768bit)結(jié)合成密鑰對(duì)key(1024bit),發(fā)回給服務(wù)器端,服務(wù)端利用自己的私鑰解密,讀取出客戶端的本地私鑰,建立連接通過key-pair數(shù)據(jù)傳輸,在此之后,服務(wù)端與客戶端就愉快的使用客戶端私鑰進(jìn)行溝通。
5.SSH命令詳解
SSH命令最簡(jiǎn)單的用法只需要指定用戶名和主機(jī)名參數(shù)即可,主機(jī)名可以是 IP 地址或者域名。
- ssh root@192.168.0.1
指定端口號(hào)
SSH 默認(rèn)連接到目標(biāo)主機(jī)的 22 端口上,我們可以使用 -p 選項(xiàng)指定端口號(hào)。
- ssh -p 22 root@192.168.0.1
追加命令
使用 SSH 在遠(yuǎn)程主機(jī)執(zhí)行一條命令并顯示到本地,然后繼續(xù)本地工作,只需要直接連接并在后面加上要執(zhí)行的命令。
- ssh -p 22 root@192.168.0.1 ls -l
圖形界面
在遠(yuǎn)程主機(jī)運(yùn)行一個(gè)圖形界面的程序,只需使用SSH的-X選項(xiàng),然后主機(jī)就會(huì)開啟 X11轉(zhuǎn)發(fā)功能。
- ssh -X 22 root@192.168.0.1
綁定源地址
如果你的客戶端有多于兩個(gè)以上的 IP 地址,你就不可能分得清楚在使用哪一個(gè) IP 連接到 SSH 服務(wù)器。為了解決這種情況,我們可以使用 -b 選項(xiàng)來指定一個(gè)IP 地址。這個(gè) IP 將會(huì)被使用做建立連接的源地址。
- ssh -b 192.168.0.200 root@192.168.0.103
對(duì)所有數(shù)據(jù)請(qǐng)求壓縮
使用 -C 選項(xiàng),所有通過 SSH 發(fā)送或接收的數(shù)據(jù)將會(huì)被壓縮,并且仍然是加密的。
- ssh -b 192.168.0.200 root@192.168.0.103
打開調(diào)試模式
因?yàn)槟承┰颍覀兿胍粉櫿{(diào)試我們建立的 SSH 連接情況。SSH 提供的 -v 選項(xiàng)參數(shù)正是為此而設(shè)的。其可以看到在哪個(gè)環(huán)節(jié)出了問題。
- ssh -v root@192.168.0.103
6.SSH免密登陸
通過SSH命令登陸遠(yuǎn)程服務(wù)器需要手動(dòng)的每次輸入密碼,解決這個(gè)問題其實(shí)非常簡(jiǎn)單,通過 ssh-keygen 生成本地公鑰和私鑰,將公鑰Copy到遠(yuǎn)程服務(wù)器就可以。
1.構(gòu)建 SSH 密鑰對(duì)
使用 ssh-keygen -t +算法名,現(xiàn)在大多數(shù)都使用 RSA 或者 DSA 算法。
如果你在安裝Git時(shí)已經(jīng)做過此步驟,那么忽略這一步即可。
- ssh-keygen -t rsa
2.拷貝本地公鑰給遠(yuǎn)程服務(wù)器
- ssh-copy-id root@192.168.25.110
你可以通過參數(shù) -i 指定公鑰文件
- ssh-copy-id -i id_dsa.pub omd@192.168.25.110
3.查看是否已經(jīng)添加了對(duì)應(yīng)主機(jī)的密鑰
使用 -F 選項(xiàng)
- ssh-keygen -F 192.168.0.1
4.刪除主機(jī)密鑰
使用-R選項(xiàng),也可以在 ~/.ssh/known_hosts 文件中手動(dòng)刪除
- ssh-keygen -R 192.168.0.1
7.如何配置 SSH
SSH 的配置文件在 /etc/ssh/sshd_config 中,你可以看到端口號(hào),空閑超時(shí)時(shí)間等配置項(xiàng)。
- cat /etc/ssh/sshd_config
/etc/ssh/sshd_config 配置文件詳細(xì)說明
- #############1. 關(guān)于 SSH Server 的整體設(shè)定##############
- #Port 22
- ##port用來設(shè)置sshd監(jiān)聽的端口,為了安全起見,建議更改默認(rèn)的22端口為5位以上陌生端口
- #Protocol 2,1
- Protocol 2
- ##設(shè)置協(xié)議版本為SSH1或SSH2,SSH1存在漏洞與缺陷,選擇SSH2
- #AddressFamily any
- #ListenAddress 0.0.0.0
- #ListenAddress用來設(shè)置sshd服務(wù)器綁定的IP地址
- ##監(jiān)聽的主機(jī)適配卡,舉個(gè)例子來說,如果您有兩個(gè) IP, 分別是 192.168.0.11 及 192.168.2.20 ,那么只想要
- ###開放 192.168.0.11 時(shí),就可以設(shè)置為:ListenAddress 192.168.0.11
- ####表示只監(jiān)聽來自 192.168.0.11 這個(gè) IP 的SSH聯(lián)機(jī)。如果不使用設(shè)定的話,則預(yù)設(shè)所有接口均接受 SSH
- #############2. 說明主機(jī)的 Private Key 放置的檔案##########
- #ListenAddress ::
- ##HostKey用來設(shè)置服務(wù)器秘鑰文件的路徑
- # HostKey for protocol version 1
- #HostKey /etc/ssh/ssh_host_key
- ##設(shè)置SSH version 1 使用的私鑰
- # HostKeys for protocol version 2
- #HostKey /etc/ssh/ssh_host_rsa_key
- ##設(shè)置SSH version 2 使用的 RSA 私鑰
- #HostKey /etc/ssh/ssh_host_dsa_key
- ##設(shè)置SSH version 2 使用的 DSA 私鑰
- #Compression yes
- ##設(shè)置是否可以使用壓縮指令
- # Lifetime and size of ephemeral version 1 server key
- #KeyRegenerationInterval 1h
- ##KeyRegenerationInterval用來設(shè)置多長(zhǎng)時(shí)間后系統(tǒng)自動(dòng)重新生成服務(wù)器的秘鑰,
- ###(如果使用密鑰)。重新生成秘鑰是為了防止利用盜用的密鑰解密被截獲的信息。
- #ServerKeyBits 768
- ##ServerKeyBits用來定義服務(wù)器密鑰的長(zhǎng)度
- ###指定臨時(shí)服務(wù)器密鑰的長(zhǎng)度。僅用于SSH-1。默認(rèn)值是 768(位)。最小值是 512 。
- # Logging
- # obsoletes QuietMode and FascistLogging
- #SyslogFacility AUTH
- SyslogFacility AUTHPRIV
- ##SyslogFacility用來設(shè)定在記錄來自sshd的消息的時(shí)候,是否給出“facility code”
- #LogLevel INFO
- ##LogLevel用來設(shè)定sshd日志消息的級(jí)別
- #################3.安全認(rèn)證方面的設(shè)定################
- #############3.1、有關(guān)安全登錄的設(shè)定###############
- # Authentication:
- ##限制用戶必須在指定的時(shí)限內(nèi)認(rèn)證成功,0 表示無限制。默認(rèn)值是 120 秒。
- #LoginGraceTime 2m
- ##LoginGraceTime用來設(shè)定如果用戶登錄失敗,在切斷連接前服務(wù)器需要等待的時(shí)間,單位為妙
- #PermitRootLogin yes
- ##PermitRootLogin用來設(shè)置能不能直接以超級(jí)用戶ssh登錄,root遠(yuǎn)程登錄Linux很危險(xiǎn),建議注銷或設(shè)置為no
- #StrictModes yes
- ##StrictModes用來設(shè)置ssh在接收登錄請(qǐng)求之前是否檢查用戶根目錄和rhosts文件的權(quán)限和所有權(quán),建議開啟
- ###建議使用默認(rèn)值"yes"來預(yù)防可能出現(xiàn)的低級(jí)錯(cuò)誤。
- #RSAAuthentication yes
- ##RSAAuthentication用來設(shè)置是否開啟RSA密鑰驗(yàn)證,只針對(duì)SSH1
- #PubkeyAuthentication yes
- ##PubkeyAuthentication用來設(shè)置是否開啟公鑰驗(yàn)證,如果使用公鑰驗(yàn)證的方式登錄時(shí),則設(shè)置為yes
- #AuthorizedKeysFile .ssh/authorized_keys
- ##AuthorizedKeysFile用來設(shè)置公鑰驗(yàn)證文件的路徑,與PubkeyAuthentication配合使用,默認(rèn)值是".ssh/authorized_keys"。
- ###該指令中可以使用下列根據(jù)連接時(shí)的實(shí)際情況進(jìn)行展開的符號(hào): %% 表示'%'、%h 表示用戶的主目錄、%u 表示該用戶的用戶名
- ####經(jīng)過擴(kuò)展之后的值必須要么是絕對(duì)路徑,要么是相對(duì)于用戶主目錄的相對(duì)路徑。
- #############3.2、安全驗(yàn)證的設(shè)定###############
- # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
- #RhostsRSAAuthentication no
- ##是否使用強(qiáng)可信主機(jī)認(rèn)證(通過檢查遠(yuǎn)程主機(jī)名和關(guān)聯(lián)的用戶名進(jìn)行認(rèn)證)。僅用于SSH-1。
- ###這是通過在RSA認(rèn)證成功后再檢查 ~/.rhosts 或 /etc/hosts.equiv 進(jìn)行認(rèn)證的。出于安全考慮,建議使用默認(rèn)值"no"。
- # similar for protocol version 2
- #HostbasedAuthentication no
- ##這個(gè)指令與 RhostsRSAAuthentication 類似,但是僅可以用于SSH-2。
- # Change to yes if you don't trust ~/.ssh/known_hosts for
- # RhostsRSAAuthentication and HostbasedAuthentication
- #IgnoreUserKnownHosts no
- ##IgnoreUserKnownHosts用來設(shè)置ssh在進(jìn)行RhostsRSAAuthentication安全驗(yàn)證時(shí)是否忽略用戶的“/$HOME/.ssh/known_hosts”文件
- # Don't read the user's ~/.rhosts and ~/.shosts files
- #IgnoreRhosts yes
- ##IgnoreRhosts用來設(shè)置驗(yàn)證的時(shí)候是否使用“~/.rhosts”和“~/.shosts”文件
- # To disable tunneled clear text passwords, change to no here!
- #PasswordAuthentication yes
- ##PasswordAuthentication用來設(shè)置是否開啟密碼驗(yàn)證機(jī)制,如果用密碼登錄系統(tǒng),則設(shè)置yes
- #PermitEmptyPasswords no
- #PermitEmptyPasswords用來設(shè)置是否允許用口令為空的賬號(hào)登錄系統(tǒng),設(shè)置no
- #PasswordAuthentication yes
- ##是否允許使用基于密碼的認(rèn)證。默認(rèn)為"yes"。
- PasswordAuthentication yes
- # Change to no to disable s/key passwords
- ##設(shè)置禁用s/key密碼
- #ChallengeResponseAuthentication yes
- ##ChallengeResponseAuthentication 是否允許質(zhì)疑-應(yīng)答(challenge-response)認(rèn)證
- ChallengeResponseAuthentication no
- ########3.3、與 Kerberos 有關(guān)的參數(shù)設(shè)定,指定是否允許基于Kerberos的用戶認(rèn)證########
- #Kerberos options
- #KerberosAuthentication no
- ##是否要求用戶為PasswdAuthentication提供的密碼必須通過Kerberos KDC認(rèn)證,要使用Kerberos認(rèn)證,
- ###服務(wù)器必須提供一個(gè)可以校驗(yàn)KDC identity的Kerberos servtab。默認(rèn)值為no
- #KerberosOrLocalPasswd yes
- ##如果Kerberos密碼認(rèn)證失敗,那么該密碼還將要通過其他的的認(rèn)證機(jī)制,如/etc/passwd
- ###在啟用此項(xiàng)后,如果無法通過Kerberos驗(yàn)證,則密碼的正確性將由本地的機(jī)制來決定,如/etc/passwd,默認(rèn)為yes
- #KerberosTicketCleanup yes
- ##設(shè)置是否在用戶退出登錄是自動(dòng)銷毀用戶的ticket
- #KerberosGetAFSToken no
- ##如果使用AFS并且該用戶有一個(gè)Kerberos 5 TGT,那么開啟該指令后,
- ###將會(huì)在訪問用戶的家目錄前嘗試獲取一個(gè)AFS token,并嘗試傳送 AFS token 給 Server 端,默認(rèn)為no
- ####3.4、與 GSSAPI 有關(guān)的參數(shù)設(shè)定,指定是否允許基于GSSAPI的用戶認(rèn)證,僅適用于SSH2####
- ##GSSAPI 是一套類似 Kerberos 5 的通用網(wǎng)絡(luò)安全系統(tǒng)接口。
- ###如果你擁有一套 GSSAPI庫(kù),就可以通過 tcp 連接直接建立 cvs 連接,由 GSSAPI 進(jìn)行安全鑒別。
- # GSSAPI options
- #GSSAPIAuthentication no
- ##GSSAPIAuthentication 指定是否允許基于GSSAPI的用戶認(rèn)證,默認(rèn)為no
- GSSAPIAuthentication yes
- #GSSAPICleanupCredentials yes
- ##GSSAPICleanupCredentials 設(shè)置是否在用戶退出登錄是自動(dòng)銷毀用戶的憑證緩存
- GSSAPICleanupCredentials yes
- # Set this to 'yes' to enable PAM authentication, account processing,
- # and session processing. If this is enabled, PAM authentication will
- # be allowed through the ChallengeResponseAuthentication mechanism.
- # Depending on your PAM configuration, this may bypass the setting of
- # PasswordAuthentication, PermitEmptyPasswords, and
- # "PermitRootLogin without-password". If you just want the PAM account and
- # session checks to run without PAM authentication, then enable this but set
- # ChallengeResponseAuthentication=no
- #UsePAM no
- ##設(shè)置是否通過PAM驗(yàn)證
- UsePAM yes
- # Accept locale-related environment variables
- ##AcceptEnv 指定客戶端發(fā)送的哪些環(huán)境變量將會(huì)被傳遞到會(huì)話環(huán)境中。
- ###[注意]只有SSH-2協(xié)議支持環(huán)境變量的傳遞。指令的值是空格分隔的變量名列表(其中可以使用'*'和'?'作為通配符)。
- ####也可以使用多個(gè) AcceptEnv 達(dá)到同樣的目的。需要注意的是,有些環(huán)境變量可能會(huì)被用于繞過禁止用戶使用的環(huán)境變量。
- #####由于這個(gè)原因,該指令應(yīng)當(dāng)小心使用。默認(rèn)是不傳遞任何環(huán)境變量。
- AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
- AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
- AcceptEnv LC_IDENTIFICATION LC_ALL
- AllowTcpForwarding yes
- ##AllowTcpForwarding設(shè)置是否允許允許tcp端口轉(zhuǎn)發(fā),保護(hù)其他的tcp連接
- #GatewayPorts no
- ##GatewayPorts 設(shè)置是否允許遠(yuǎn)程客戶端使用本地主機(jī)的端口轉(zhuǎn)發(fā)功能,出于安全考慮,建議禁止
- #############3.5、X-Window下使用的相關(guān)設(shè)定###############
- #X11Forwarding no
- ##X11Forwarding 用來設(shè)置是否允許X11轉(zhuǎn)發(fā)
- X11Forwarding yes
- #X11DisplayOffset 10
- ##指定X11 轉(zhuǎn)發(fā)的第一個(gè)可用的顯示區(qū)(display)數(shù)字。默認(rèn)值是 10 。
- ###可以用于防止 sshd 占用了真實(shí)的 X11 服務(wù)器顯示區(qū),從而發(fā)生混淆。
- X11DisplayOffset 10
- #X11UseLocalhost yes
- #################3.6、登入后的相關(guān)設(shè)定#################
- #PrintMotd yes
- ##PrintMotd用來設(shè)置sshd是否在用戶登錄時(shí)顯示“/etc/motd”中的信息,可以選在在“/etc/motd”中加入警告的信息
- #PrintLastLog yes
- #PrintLastLog 是否顯示上次登錄信息
- #TCPKeepAlive yes
- ##TCPKeepAlive 是否持續(xù)連接,設(shè)置yes可以防止死連接
- ###一般而言,如果設(shè)定這項(xiàng)目的話,那么 SSH Server 會(huì)傳送 KeepAlive 的訊息給 Client 端,以確保兩者的聯(lián)機(jī)正常!
- ####這種消息可以檢測(cè)到死連接、連接不當(dāng)關(guān)閉、客戶端崩潰等異常。在這個(gè)情況下,任何一端死掉后, SSH 可以立刻知道,而不會(huì)有僵尸程序的發(fā)生!
- #UseLogin no
- ##UseLogin 設(shè)置是否在交互式會(huì)話的登錄過程中使用。默認(rèn)值是"no"。
- ###如果開啟此指令,那么X11Forwarding 將會(huì)被禁止,因?yàn)閘ogin不知道如何處理 xauth cookies 。
- ####需要注意的是,在SSH底下本來就不接受 login 這個(gè)程序的登入,如果指UsePrivilegeSeparation ,那么它將在認(rèn)證完成后被禁用。
- UserLogin no
- #UsePrivilegeSeparation yes
- ##UsePrivilegeSeparation 設(shè)置使用者的權(quán)限
- #PermitUserEnvironment no
- #Compression delayed
- #ClientAliveInterval 0
- #ClientAliveCountMax 3
- #ShowPatchLevel no
- #UseDNS yes
- ##UseDNS是否使用dns反向解析
- #PidFile /var/run/sshd.pid
- #MaxStartups 10
- ##MaxStartups 設(shè)置同時(shí)允許幾個(gè)尚未登入的聯(lián)機(jī),當(dāng)用戶連上ssh但并未輸入密碼即為所謂的聯(lián)機(jī),
- ###在這個(gè)聯(lián)機(jī)中,為了保護(hù)主機(jī),所以需要設(shè)置最大值,預(yù)設(shè)為10個(gè),而已經(jīng)建立聯(lián)機(jī)的不計(jì)算入內(nèi),
- ####所以一般5個(gè)即可,這個(gè)設(shè)置可以防止惡意對(duì)服務(wù)器進(jìn)行連接
- #MaxAuthTries 6
- ##MaxAuthTries 用來設(shè)置最大失敗嘗試登陸次數(shù)為6,合理設(shè)置辭職,可以防止攻擊者窮舉登錄服務(wù)器
- #PermitTunnel no
- ############3.7、開放禁止用戶設(shè)定############
- #AllowUsers<用戶名1> <用戶名2> <用戶名3> ...
- ##指定允許通過遠(yuǎn)程訪問的用戶,多個(gè)用戶以空格隔開
- #AllowGroups<組名1> <組名2> <組名3> ...
- ##指定允許通過遠(yuǎn)程訪問的組,多個(gè)組以空格隔開。當(dāng)多個(gè)用戶需要通過ssh登錄系統(tǒng)時(shí),可將所有用戶加入一個(gè)組中。
- #DenyUsers<用戶名1> <用戶名2> <用戶名3> ...
- ##指定禁止通過遠(yuǎn)程訪問的用戶,多個(gè)用戶以空格隔開
- #DenyGroups<組名1> <組名2> <組名3> ...
- ##指定禁止通過遠(yuǎn)程訪問的組,多個(gè)組以空格隔開。
- # no default banner path
- #Banner /some/path
- # override default of no subsystems
- Subsystem sftp /usr/libexec/openssh/sftp-server
- ClientAliveInterval 3600
- ClientAliveCountMax 0
8.sftp是什么
SFTP是Secure FileTransferProtocol的縮寫,安全文件傳送協(xié)議。
SFTP和FTP是兩種協(xié)議,它們是不同的,sftp是ssh內(nèi)含的協(xié)議,只要sshd服務(wù)器啟動(dòng)了,它就可用,它本身沒有單獨(dú)的守護(hù)進(jìn)程,更不需要ftp服務(wù)器啟動(dòng)。
SFTP同樣是使用加密傳輸認(rèn)證信息和傳輸?shù)臄?shù)據(jù),所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術(shù),所以傳輸效率比普通的FTP要低得多,如果您對(duì)網(wǎng)絡(luò)安全性要求更高時(shí),可以使用SFTP代替FTP。
9.sftp登陸
使用sftp登陸遠(yuǎn)程服務(wù)器,可以
- sftp root@192.168.0.1
也可以指定端口號(hào)
- sftp -oPort=22 root@192.168.0.1
10.使用sftp進(jìn)行文件上傳下載
下載
語法
- get [-afPpRr] remote [local]
下載遠(yuǎn)程文件到本地目錄
- get /tmp/test.c ~/
下載遠(yuǎn)程文件夾到本地目錄
- get -r /tmp/test.c ~/
上傳
語法
- put [-afPpRr] local [remote]
上傳本地文件到遠(yuǎn)程文件夾
- put ~/test.c /tmp/
上傳本地文件夾到遠(yuǎn)程目錄(會(huì)上傳本地文件夾下的所有文件)
- put ~/test /tmp/
11.更多sftp命令
輸入 help 命令可以查看sftp支持的命令操作:
- sftp> help
- Available commands:
- bye Quit sftp
- cd path Change remote directory to 'path'
- chgrp grp path Change group of file 'path' to 'grp'
- chmod mode path Change permissions of file 'path' to 'mode'
- chown own path Change owner of file 'path' to 'own'
- df [-hi] [path] Display statistics for current directory or
- filesystem containing 'path'
- exit Quit sftp
- get [-afPpRr] remote [local] Download file
- reget [-fPpRr] remote [local] Resume download file
- reput [-fPpRr] [local] remote Resume upload file
- help Display this help text
- lcd path Change local directory to 'path'
- lls [ls-options [path]] Display local directory listing
- lmkdir path Create local directory
- ln [-s] oldpath newpath Link remote file (-s for symlink)
- lpwd Print local working directory
- ls [-1afhlnrSt] [path] Display remote directory listing
- lumask umask Set local umask to 'umask'
- mkdir path Create remote directory
- progress Toggle display of progress meter
- put [-afPpRr] local [remote] Upload file
- pwd Display remote working directory
- quit Quit sftp
- rename oldpath newpath Rename remote file
- rm path Delete remote file
- rmdir path Remove remote directory
- symlink oldpath newpath Symlink remote file
- version Show SFTP version
- !command Execute 'command' in local shell
- ! Escape to local shell
- ? Synonym for help
執(zhí)行本地命令
如果我們想在進(jìn)入sftp會(huì)話環(huán)境下執(zhí)行本地命令怎么辦?只需要在本地命令之前加嘆號(hào)!即可,示例如下:
- !ls
退出會(huì)話
無論是在 ssh 還是 sftp,都可以使用 exit 退出當(dāng)前會(huì)話,sftp 還可以使用 quit 命令退出。
12.結(jié)語
相信本文足以可以讓你解決使用終端過程中碰到的絕大多數(shù)問題了。