OpenOpenSSH是openBSD项目组开发的,基于BSD协议。一般linux发行版自带Openssh。2008年7月出了5.1版。 openssh包含一套程序。scp替换rcp,sftp替换了ftp. 包含sshd和sftp server端。
如果远程为22端口,一切都好说。如果不是那就得看文档了
scp: 远程文件拷贝(scp指定了远端的非默认22端口):
scp -P 20022 src.tar.gz
scp -P 20022 .
scp -o port=60066 .
scp -P 60066 -r /home/zhouhh/src/.*
拷贝目录,-r是将目录下的目录递归拷贝。".*"是将隐藏文件也拷贝过去。需要先在远端创建好相应的目录。
scp -P 60066 -r *
最 后一个命令存在一个问题,就是如果172.16.22.30不是默认22端口,无法指定端口。即-P 指定非缺省的ssh端口时,对远程的拷贝,无法指定两个不同的端口。这应该是scp的命令缺陷。如果谁知道怎么指定两个远端的非缺省22端口的语法,请告 诉我。联系地址ablozhou[at]gmail.com。
scp的优点是使用简单,缺点是无法列出远端目录和改变目录。复杂一点的用法是用sftp。
sftp:
sftp -o port=60066
其中-o port选项指定非缺省的ssh端口。
Connecting to 192.168.12.12...
password:
Changing to: /home/zhouhh
sftp> pwd
Remote working directory: /home/zhouhh
在命令行模式下可以执行一系列命令
ls,cd,pwd,mkdir,rmdir,rm 等远端文件操作
lls,lcd,lpwd等本地操作。
!command 执行本地shell命令
!进入本地shell,exit再进入sftp的命令提示。
可以用help或"?"来查询所有的sftp支持的命令。
get 从远端下载文件
put 将本地文件上传到远程。
sftp配置,需要在/etc/ssh/sshd_config
配置文件增加sftp子系统:
Subsystem sftp /usr/libexec/openssh/sftp-server
然后重启sshd:
service sshd restart
之前有发过一篇博客:几个常见的 Composer 国内镜像 ,经过长期的测试,发现这些源不是少内容就是速度慢,这不再推荐一个新的,用了它之后,我就腰不酸腿不疼了:http://packagist.phpcomposer.com 【其实这个就是原来的:http://pkg.phpcomposer.com/repo/packagist/,只是换个名字,但这个好象确实快了一点】
具体的操作方法查看上文的博客内容。
这是一个备份,起因是由于我现在使用的gogs不能使用ssh的方式连接,主要是不方便,所以目前我是使用了HTTP的方式。
看了这篇文章后对我有启发,但是我没有使用,所以只是先做个备份。原文在:http://www.luxingmin.com/archives/278.html
XML/HTML代码
- 一直想实现指定git访问的私钥,网上资料给出来的都是通过ssh_config来实现,这种方法很繁琐,另外想实现git webhook部署时,使用这种方法也比较不灵活。
-
- 切入正题
-
- 建立git_ssh文件,内容如下
-
- #!/bin/bash
- ssh -i $SSH_KEY_FILE $1 $2
- 然后增加执行权限
-
- chmod 755 git_ssh
- 然后就可以通过如下命令指定git访问时使用的ssh私钥
-
- SSH_KEY_FILE=/root/git/id_rsa GIT_SSH=/root/git/git_ssh git clone git@xxx
---EOF---
转一篇Vargrant的相关文章【Vagrant下共享目录静态文件(js/jpg/png等)“缓存”问题】,原文来自:http://blog.smdcn.net/article/1325.html,主要是问题在于使用了sendfile可能会导致部会内容不会刷新。
原文如下:
XML/HTML代码
- 之前提到说通过Vagrant部署开发环境,使用目录共享模式,在本地磁盘进行开发,而通过虚拟机环境运行开发的页面。
-
- 是的,一切看起来都是那么的顺利,首先基于VirtualBox安装了Vagrant,接下来,按照以往部署环境的习惯,在VM中安装了nginx作为开发运行环境,并且将本地的共享目录作为nginx的web目录,然后打开页面,看上去似乎都很正常,但接下来,你发现了一个神奇的事情,你修改替换了一个css,一张图片,然后刷新浏览器,发现什么都没有变,然后你有非常猛烈、使劲的F5,依旧还是没有改变,是的,你看看编辑器,似乎替换是正常的,在看看VM上的文件,也都是对的,是的,尝试重启nginx,依旧没有任何变化,你开始怀疑php5-fpm甚至于毫不相干的memcached和mysql,但都无济于事。也不知道是什么让这些文件被“缓存”了呢。
-
- 当你尝试修改一个js,并且用同样的方法更新之后,会遇到类似的问题,是的,就算重启VM上任何服务,甚至重启VM,依旧没有用,当然,比起其他资源文件,浏览器的反应会强烈一些,因为浏览器会提示未知错误,而你通过浏览器查看你修改的JS文件,会看到文件尾巴有下面奇怪的随机字符:
-
- �����������������
-
- 这到底是什么东西呢?编码错误?缓存异常?又或是其他什么?
-
- 是的,你尝试花费很多时间,试验各种各样的方法去解决这个问题,其实对于nginx来说,你只需要修改配置文件(nginx.conf)中的一行重启就能简单的解决这个问题:
-
- sendfile off;
- 找到 nginx.conf ,把里面的 “sendfile on” 修改为 “sendfile off”。
-
- 当然,如果你使用Apache也可能遇到类似的问题,那么同样也有类似的配置需要修改:
-
- EnableSendfile off
- 关于这个问题的参照:
- https://github.com/mitchellh/vagrant/issues/351#issuecomment-1339640
-
- http://stackoverflow.com/questions/9479117/vagrant-virtualbox-apache2-strange-cache-behaviour
----转载完毕---
关于这个sendfile,还有人做了个测试:记vagrant nginx sendfile问题,然后居然没有人评论。。。
XML/HTML代码
- 从今年开始,一直在vagrant虚拟机上做开发
-
- 因前段时间一个项目需要调试静态文件,出现静态文件修改后,浏览器刷新不生效。
-
- 最后追踪到是nginx开启了sendfile这一项。。
-
- 具体sendfile原理可以查下,,网上写的都很详细,这里就不复述了。
-
- 一开始一直认为是nginx某个地方配置有问题。。但后来干脆自己写下,做下测试
-
- 具体代码如下(tcp那几步连接这里就不写了。网上很多):
-
-
- /**
- * @connect tcp 连接句柄
- */
- int sendClient(int connect)
- {
- int fd;
- struct stat fileStat;
- off_t offset = 0;
- fd = open("/data/web/test.com/index.html", O_RDONLY|O_NONBLOCK);
- if (fd < 0) {
- perror("open file.");
- return 0;
- }
- //获取文件信息
- fstat(fd, &fileStat);
- char buffer[fileStat.st_size];
- // read(fd, buffer, fileStat.st_size);
- //write(connect, buffer, fileStat.st_size);
- sendfile(connect, fd, &offset, fileStat.st_size);
- close(fd);
- return 1;
- }
-
- 至些我测了下,得到的还是不生效,由此可以断定,与nginx无关,与系统调度有关
-
- 至于问题,我现在的回答只能是vagrant的一个坑,具体是什么,我也无从得知,
-
- 当然, 这个我也是从表象猜测, 如果有人知道真正的原因, 还请不吝留言指教