1.前言
在mac下登陸遠(yuǎn)程服務(wù)器并沒(méi)有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的原理與使用技巧,幫助更多終端愛(ài)好者更方便更隨心所欲的使用終端。
2.SSH是什么
SSH服務(wù)其實(shí)是一個(gè)守護(hù)進(jìn)程(demon),系統(tǒng)后臺(tái)會(huì)監(jiān)聽(tīng)客戶端的連接,ssh服務(wù)端的進(jìn)程名為sshd,負(fù)責(zé)實(shí)時(shí)監(jiān)聽(tīng)客戶端的請(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ì)稱加密算法使用起來(lái)簡(jiǎn)單快捷,密鑰較短,且破譯困難,除了數(shù)據(jù)加密標(biāo)準(zhǔn)(DES),另一個(gè)對(duì)稱密鑰加密系統(tǒng)是國(guó)際數(shù)據(jù)加密算法(IDEA),它比DES的加密性好,而且對(duì)計(jì)算機(jī)功能要求也沒(méi)有那么高。
非對(duì)稱加密
與對(duì)稱加密算法不同,非對(duì)稱加密算法需要兩個(gè)密鑰:公開(kāi)密鑰(publickey)和私有密鑰(privatekey)。
公開(kāi)密鑰與私有密鑰是一對(duì),如果用公開(kāi)密鑰對(duì)數(shù)據(jù)進(jìn)行加密,只有用對(duì)應(yīng)的私有密鑰才能解密;如果用私有密鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有用對(duì)應(yīng)的公開(kāi)密鑰才能解密。
因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對(duì)稱加密算法。
4.SSH如何工作
了解了對(duì)稱加密和非對(duì)稱加密是什么之后,再來(lái)了解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ù)端利用自己的私鑰解密,讀取出客戶端的本地私鑰,建立連接通過(guò)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ì)開(kāi)啟 X11轉(zhuǎn)發(fā)功能。
ssh -X 22 root@192.168.0.1
綁定源地址
如果你的客戶端有多于兩個(gè)以上的 IP 地址,你就不可能分得清楚在使用哪一個(gè) IP 連接到 SSH 服務(wù)器。為了解決這種情況,我們可以使用 -b 選項(xiàng)來(lái)指定一個(gè)IP 地址。這個(gè) IP 將會(huì)被使用做建立連接的源地址。
ssh -b 192.168.0.200 root@192.168.0.103
對(duì)所有數(shù)據(jù)請(qǐng)求壓縮
使用 -C 選項(xiàng),所有通過(guò) SSH 發(fā)送或接收的數(shù)據(jù)將會(huì)被壓縮,并且仍然是加密的。
ssh -C root@192.168.0.103
打開(kāi)調(diào)試模式
因?yàn)槟承┰颍覀兿胍粉櫿{(diào)試我們建立的 SSH 連接情況。SSH 提供的 -v 選項(xiàng)參數(shù)正是為此而設(shè)的。其可以看到在哪個(gè)環(huán)節(jié)出了問(wèn)題。
ssh -v root@192.168.0.103
6.SSH免密登陸
通過(guò)SSH命令登陸遠(yuǎn)程服務(wù)器需要手動(dòng)的每次輸入密碼,解決這個(gè)問(wèn)題其實(shí)非常簡(jiǎn)單,通過(guò) ssh-keygen 生成本地公鑰和私鑰,將公鑰Copy到遠(yuǎn)程服務(wù)器就可以。
1.構(gòu)建 SSH 密鑰對(duì)
使用 ssh-keygen -t +算法名,現(xiàn)在大多數(shù)都使用 RSA 或者 DSA 算法。
如果你在安裝Git時(shí)已經(jīng)做過(guò)此步驟,那么忽略這一步即可。
ssh-keygen -t rsa
2.拷貝本地公鑰給遠(yuǎn)程服務(wù)器
ssh-copy-id root@192.168.25.110
你可以通過(guò)參數(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ì)說(shuō)明
#############1. 關(guān)于 SSH Server 的整體設(shè)定############## #Port 22 ##port用來(lái)設(shè)置sshd監(jiān)聽(tīng)的端口,為了安全起見(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用來(lái)設(shè)置sshd服務(wù)器綁定的IP地址 ##監(jiān)聽(tīng)的主機(jī)適配卡,舉個(gè)例子來(lái)說(shuō),如果您有兩個(gè) IP, 分別是 192.168.0.11 及 192.168.2.20 ,那么只想要 ###開(kāi)放 192.168.0.11 時(shí),就可以設(shè)置為:ListenAddress 192.168.0.11 ####表示只監(jiān)聽(tīng)來(lái)自 192.168.0.11 這個(gè) IP 的SSH聯(lián)機(jī)。如果不使用設(shè)定的話,則預(yù)設(shè)所有接口均接受 SSH #############2. 說(shuō)明主機(jī)的 Private Key 放置的檔案########## #ListenAddress :: ##HostKey用來(lái)設(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用來(lái)設(shè)置多長(zhǎng)時(shí)間后系統(tǒng)自動(dòng)重新生成服務(wù)器的秘鑰, ###(如果使用密鑰)。重新生成秘鑰是為了防止利用盜用的密鑰解密被截獲的信息。 #ServerKeyBits 768 ##ServerKeyBits用來(lái)定義服務(wù)器密鑰的長(zhǎng)度 ###指定臨時(shí)服務(wù)器密鑰的長(zhǎng)度。僅用于SSH-1。默認(rèn)值是 768(位)。最小值是 512 。 # Logging # obsoletes QuietMode and FascistLogging #SyslogFacility AUTH SyslogFacility AUTHPRIV ##SyslogFacility用來(lái)設(shè)定在記錄來(lái)自sshd的消息的時(shí)候,是否給出“facility code” #LogLevel INFO ##LogLevel用來(lái)設(shè)定sshd日志消息的級(jí)別 #################3.安全認(rèn)證方面的設(shè)定################ #############3.1、有關(guān)安全登錄的設(shè)定############### # Authentication: ##限制用戶必須在指定的時(shí)限內(nèi)認(rèn)證成功,0 表示無(wú)限制。默認(rèn)值是 120 秒。 #LoginGraceTime 2m ##LoginGraceTime用來(lái)設(shè)定如果用戶登錄失敗,在切斷連接前服務(wù)器需要等待的時(shí)間,單位為妙 #PermitRootLogin yes ##PermitRootLogin用來(lái)設(shè)置能不能直接以超級(jí)用戶ssh登錄,root遠(yuǎn)程登錄linux很危險(xiǎn),建議注銷或設(shè)置為no #StrictModes yes ##StrictModes用來(lái)設(shè)置ssh在接收登錄請(qǐng)求之前是否檢查用戶根目錄和rhosts文件的權(quán)限和所有權(quán),建議開(kāi)啟 ###建議使用默認(rèn)值"yes"來(lái)預(yù)防可能出現(xiàn)的低級(jí)錯(cuò)誤。 #RSAAuthentication yes ##RSAAuthentication用來(lái)設(shè)置是否開(kāi)啟RSA密鑰驗(yàn)證,只針對(duì)SSH1 #PubkeyAuthentication yes ##PubkeyAuthentication用來(lái)設(shè)置是否開(kāi)啟公鑰驗(yàn)證,如果使用公鑰驗(yàn)證的方式登錄時(shí),則設(shè)置為yes #AuthorizedKeysFile .ssh/authorized_keys ##AuthorizedKeysFile用來(lái)設(shè)置公鑰驗(yàn)證文件的路徑,與PubkeyAuthentication配合使用,默認(rèn)值是".ssh/authorized_keys"。 ###該指令中可以使用下列根據(jù)連接時(shí)的實(shí)際情況進(jìn)行展開(kāi)的符號(hào): %% 表示'%'、%h 表示用戶的主目錄、%u 表示該用戶的用戶名 ####經(jīng)過(guò)擴(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)證(通過(guò)檢查遠(yuǎn)程主機(jī)名和關(guān)聯(lián)的用戶名進(jìn)行認(rèn)證)。僅用于SSH-1。 ###這是通過(guò)在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用來(lái)設(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用來(lái)設(shè)置驗(yàn)證的時(shí)候是否使用“~/.rhosts”和“~/.shosts”文件 # To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes ##PasswordAuthentication用來(lái)設(shè)置是否開(kāi)啟密碼驗(yàn)證機(jī)制,如果用密碼登錄系統(tǒng),則設(shè)置yes #PermitEmptyPasswords no #PermitEmptyPasswords用來(lái)設(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提供的密碼必須通過(guò)Kerberos KDC認(rèn)證,要使用Kerberos認(rèn)證, ###服務(wù)器必須提供一個(gè)可以校驗(yàn)KDC identity的Kerberos servtab。默認(rèn)值為no #KerberosOrLocalPasswd yes ##如果Kerberos密碼認(rèn)證失敗,那么該密碼還將要通過(guò)其他的的認(rèn)證機(jī)制,如/etc/passwd ###在啟用此項(xiàng)后,如果無(wú)法通過(guò)Kerberos驗(yàn)證,則密碼的正確性將由本地的機(jī)制來(lái)決定,如/etc/passwd,默認(rèn)為yes #KerberosTicketCleanup yes ##設(shè)置是否在用戶退出登錄是自動(dòng)銷毀用戶的ticket #KerberosGetAFSToken no ##如果使用AFS并且該用戶有一個(gè)Kerberos 5 TGT,那么開(kāi)啟該指令后, ###將會(huì)在訪問(wèn)用戶的家目錄前嘗試獲取一個(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ù),就可以通過(guò) 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è)置是否通過(guò)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ì)被用于繞過(guò)禁止用戶使用的環(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 用來(lái)設(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用來(lái)設(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ì)話的登錄過(guò)程中使用。默認(rèn)值是"no"。 ###如果開(kāi)啟此指令,那么X11Forwarding 將會(huì)被禁止,因?yàn)閘ogin不知道如何處理 xauth cookies 。 ####需要注意的是,在SSH底下本來(lái)就不接受 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 用來(lái)設(shè)置最大失敗嘗試登陸次數(shù)為6,合理設(shè)置辭職,可以防止攻擊者窮舉登錄服務(wù)器 #PermitTunnel no ############3.7、開(kāi)放禁止用戶設(shè)定############ #AllowUsers<用戶名1> <用戶名2> <用戶名3> ... ##指定允許通過(guò)遠(yuǎn)程訪問(wèn)的用戶,多個(gè)用戶以空格隔開(kāi) #AllowGroups<組名1> <組名2> <組名3> ... ##指定允許通過(guò)遠(yuǎn)程訪問(wèn)的組,多個(gè)組以空格隔開(kāi)。當(dāng)多個(gè)用戶需要通過(guò)ssh登錄系統(tǒng)時(shí),可將所有用戶加入一個(gè)組中。 #DenyUsers<用戶名1> <用戶名2> <用戶名3> ... ##指定禁止通過(guò)遠(yuǎn)程訪問(wèn)的用戶,多個(gè)用戶以空格隔開(kāi) #DenyGroups<組名1> <組名2> <組名3> ... ##指定禁止通過(guò)遠(yuǎn)程訪問(wèn)的組,多個(gè)組以空格隔開(kāi)。 # 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)了,它就可用,它本身沒(méi)有單獨(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)行文件上傳下載
下載
語(yǔ)法
get [-afPpRr] remote [local]
下載遠(yuǎn)程文件到本地目錄
get /tmp/test.c ~/
下載遠(yuǎn)程文件夾到本地目錄
get -r /tmp/test.c ~/
上傳
語(yǔ)法
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ì)話
無(wú)論是在 ssh 還是 sftp,都可以使用 exit 退出當(dāng)前會(huì)話,sftp 還可以使用 quit 命令退出。
12.結(jié)語(yǔ)
相信本文足以可以讓你解決使用終端過(guò)程中碰到的絕大多數(shù)問(wèn)題了。