问题背景
正常情况下开发都是在公司内网的编译服务器上构建的,有防火墙等各种保护机制,基本隔绝了外部网络访问公司内网的可行性。
然后近期需要搞个开源项目,编译构建都需要连通外部网络,为此专门搭了一台纯净服务器,并把它搬到可连接外部网络的房间,专门映射了外网ip和端口号,ssh已能登录。
正准备开搞然后突然懵逼了,源代码在家里,不知道怎么把源代码传到这台服务器上。
问题定位
传文件,无非是文件传输协议那些,看用哪个方便。
nfs:
cifs:
sftp:
tftp:
scp:
一开始想的是搭建nfs服务器,然后从家里挂过来,百度解释是可以的(为什么没有第一时间想到scp,因为公司环境下的编译服务器就用的是nfs方案),然后apt装服务,改配置文件,搞了N久,死活不通,报Timeout。初步怀疑是命令中指定端口号的姿势不对或者端口映射的端口号对mount挂载的支持不到位。
时间紧张,再思考了一遍以上协议,百度了下发现scp用的就是22端口,我能登ssh,scp按理说肯定能用。然后说干就干,一开始端口号指定不对,也超时,后来找到正确指定端口号的姿势,就通啦!!!撒花!!!
解决方案
1. 先通网络
假设你的服务器没有外网的IP(资源一般很紧张),你和我一样需要端口映射,需要用到IPOP。做映射的时候记得给服务器开22端口号,先验证能登ssh。
2. scp文件传输
示例
scp -P 2233 out_filename yourid@10.83.155.211:/home/yourid
速度嗖嗖的
后记
参考:
scp传文件指定端口
这个问题在nfs卡了我几乎一天,scp10分钟解决。所以,思路很重要。