每次更新网站内容,都要打开WINSCP。虽然WINSCP有一个“保持远程目录最新”的功能,减少了自己上传的麻烦,但既然用了hugo,用命令行就是一个更方便的方法了。
我的服务器端是ubuntu sftp,就采用sftp命令行。本身sftp命令行还是比较简单和方便的:
登录
$ sftp -P port sftp@serverip
按提示输入密码
将本地文件夹put到服务器端:
本地地址:E:\hugo\www\public
服务器端地址: /usr/www
put -r E:\hugo\www\public\ /usr/www/
看样子是可行的。在随后的应用中,却发现并没有那么简单。
sftp似乎总是交互式的,无法绕过输入密码这一关,使用脚本的例子几乎没有。网上能找到的脚本例子,都是使用lstp。我并不想这么用。最终,还是采用和github相同的方式,上传SSH公有密钥到服务器端解决输入密码的问题。
在使用github之初,就已经创建过这个密钥了,windows系统放在: /用户/用户名/.ssh/ 下,带pub后缀那个就是公钥。直接使用这个公钥:
$ ssh-copy-id -p port sftp@serverip #注意:端口号参数是小写字母 p
在服务器端,/home/用户名/ 路径下,会创建 .ssh/authorized_keys
然后使用sftp命令
$ sftp -P port sftp@serverip
直接进入服务器,不再需要输入密码了。
随后,就可将sftp命令写入一个文本文件, 直接一行命令就搞定:
$ sftp -P port -b batchfile sftp@serverip
密钥的方法,可参考: How To Set Up SSH Keys on Ubuntu 12.04