【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
? ? ? ? 通常,可以用scp完成兩臺(tái)主機(jī)間的文件傳輸任務(wù),但在主機(jī)間未建立信任關(guān)系的情況下,scp每次都需要輸入密碼,用起來感覺不是很方便,之前這篇筆記介紹過不用輸入密碼執(zhí)行腳本或傳輸文件的方法,但對于一些臨時(shí)性的任務(wù),準(zhǔn)備工作還是比較麻煩。
? ? ? ? 本筆記介紹一種簡單的不用密碼即可實(shí)現(xiàn)兩臺(tái)主機(jī)間的文件傳輸?shù)募记伞柚鶯inux的nc工具,方便之處:1) Linux系統(tǒng)通常默認(rèn)安裝nc工具,不需額外安裝;2) 傳輸文件時(shí)不需輸入密碼。不足之處:需要在兩臺(tái)機(jī)器上分別輸入一條命令。^_^
1. what is nc ?
? ? ? ? nc是netcat的簡寫,關(guān)于nc是什么,man如是說:arbitrary TCP and UDP connections and listens
? ? ? ? nc可以方便地實(shí)現(xiàn)任意TCP/UDP端口的偵聽,連接的建立,端口的掃描,等等。也即,nc既可以作為server以TCP或UDP方式偵聽指定端口,也可以作為client發(fā)起TCP連接或方式UDP包。下面要介紹的技巧就是借助其TCP連接來實(shí)現(xiàn)主機(jī)間文件傳輸?shù)摹?br /> ? ? ? ? nc的控制參數(shù)不少,常用的幾個(gè)參數(shù)如下所列:
? ? ? ? 1) -l
? ? ? ? 用于指定nc將處于偵聽模式。指定該參數(shù),則意味著nc被當(dāng)作server,偵聽并接受連接,而非向其它地址發(fā)起連接。
? ? ? ? 2) -p <port>
? ? ? ? 指定nc要使用的端口。若之前已指定-l,則這里的-p指定具體的偵聽端口;若未指定-l,則表示向這個(gè)端口發(fā)起連接。
? ? ? ? 備注:nc要連接的目的端口可以是具體的整數(shù),也可以直接通過服務(wù)名指定,這種情況下,nc會(huì)負(fù)責(zé)將name映射至某個(gè)well-known port(可用cat /etc/services查看這些端口跟服務(wù)名的映射關(guān)系)
? ? ? ? 3) -s <hostname/ip-address>
? ? ? ? 指定發(fā)送數(shù)據(jù)的源IP地址,適用于多網(wǎng)卡機(jī)器
? ? ? ? 4) -u
? ? ? ? 指定nc使用UDP協(xié)議,默認(rèn)為TCP
? ? ? ? 5) -v
? ? ? ? 輸出交互或出錯(cuò)信息,新手調(diào)試時(shí)尤為有用
2. use nc to transmit data between hosts
? ? ? ? 經(jīng)過上面對nc的簡介,估計(jì)不少同學(xué)已經(jīng)知道怎么用nc來實(shí)現(xiàn)兩臺(tái)機(jī)器間的文件傳輸了。這里對實(shí)現(xiàn)流程做簡單說明。
? ? ? ? 1)在數(shù)據(jù)接收方的機(jī)器上偵聽指定端口
? ? ? ?? 2)在數(shù)據(jù)發(fā)送方機(jī)器上向指定地址(ip+port)以TCP方式發(fā)送數(shù)據(jù) ?
nc dest_ip 8210 < demo.txt # 向ip為dest_ip的機(jī)器的8210端口發(fā)送demo.txt文件nc dest_ip 8210 < $(tar -jcvf demo.tar.bz2 demo.txt) # 壓縮后發(fā)送? ? ? ? 3)-v打印出錯(cuò)信息
? ? ? ? 接收方:nc -v -l -p 8210?
? ? ? ? 發(fā)送方:nc -v dest_ip 8210
? ? ? ? 注意:使用nc傳文件時(shí),需注意操作次序,receiver先偵聽端口,sender向receiver所在機(jī)器的該端口發(fā)送數(shù)據(jù)。否則發(fā)送失敗。 ? ??
=============== EOF ===============
?
總結(jié)
以上是生活随笔為你收集整理的【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么老是梦到老同学
- 下一篇: 演示:Linux工程环境应用实训(防火墙