[ubuntu入门手册]-13-使用ssh实现文件安全互传
引言
本文介绍两种Ubuntu终端下安全传输文件的方式:scp和sftp,它们各有优点,并且都基于ssh。
文章目录
0×1.安装openssh-server
如果是A传输文件给B,或者A从B上下载文件到本地,只需要在B上安装openssh-server;如果是两端想实现互相传输和访问,那么A和B都要安装openssh-server。
#1.下载安装openssh-server qing@qingsword.com:~$ sudo apt-get install openssh-server #2.如果想使用root用户登陆ssh或互传文件,需要更改ssh配置文件(建议非必要,不要开启root登陆) qing@qingsword.com:~$ sudo vim /etc/ssh/sshd_config #找到"PermitRootLogin"默认是 PermitRootLogin without-password #更改成 PermitRootLogin yes #重启ssh服务即可用root登陆ssh(注意:ubuntu系列里面服务的名称是ssh不是sshd,请注意替换) qing@qingsword.com:~$ sudo systemctl restart sshd #3.如果想改变ssh默认监听端口,在/etc/ssh/sshd_config文件中将port后面的端口改成另外的端口即可,但不要和现有端口冲突。 #4.如果需要在重启后ssh自动跟随系统启动,可以使用下面的命令将ssh加入系统启动项(仅限于使用systemd启动的系统) qing@qingsword.com:~$ sudo systemctl enable sshd
0×2.使用scp传输文件
安装好openssh-server后,就可以直接使用scp传输文件了:
#电脑A:192.168.1.100 用户名qing #电脑B:192.168.1.101 用户名sword #用户名就是我们登陆ubuntu系统时候的那个用户名称,我们必须知道用户对应的登陆密码才可以实现互传 #1.A将当前目录下的file1文件传输到B家目录下的download文件夹中 qing@qingsword.com:~$ scp file1 sword@192.168.1.101:~/download/ sword@192.168.1.101's password: <-输入sword的密码 #如果B更改了ssh端口号,使用-P参数添加更改后的端口号 qing@qingsword.com:~$ scp -P 端口号 file1 sword@192.168.1.101:~/download/ #2.A将当前目录下的test目录传输到B家目录中 qing@qingsword.com:~$ scp -r test/ sword@192.168.1.101:~ #3.将B家目录下的file2下载到本地家目录中 qing@qingsword.com:~$ scp sword@192.168.1.101:~/file2 ~ #4.将B家目录下的test下载到本地家目录中并且重命名为test1 qing@qingsword.com:~$ scp -r qingsword@192.168.1.101:~/test ~/test1
0×3.使用sftp传输文件
sftp的用法和scp差不多,只不过sftp会一直保持与服务器的连接,直到用户退出。
#1.首次连接,会提示你是否接受sword机器上的key,输入yes qing@qingsword.com:~$ sftp sword@192.168.1.101 The authenticity of host '192.168.1.101 (192.168.1.101)' can't be established. Are you sure you want to continue connecting (yes/no)? yes <-输入yes #如果修改了ssh端口 qing@qingsword.com:~$ sftp -P 端口号 sword@192.168.1.101 #2.输入密码后就进入sftp提示符下,表示现在已经连接到sword中了,可以通过pwd查看当前是连接到sword的哪个目录,默认是家目录 sftp> pwd Remote working directory: /home/sword #3.传输文件到sword sftp> put 本地文件路径 远程保存路径 #例如传输本地当前目录下的testfile到远程目录下,改名为testfile1 sftp> put testfile ./testfile1 #可以通过ls查看远程目录文件,通过lls查看本地目录文件,更多命令请输入help查阅 #4.传输本地目录test/到sword,可以在sword创建一个test目录,然后进入这个目录,再将本地的test下所有文件传输到这个目录中,如下 sftp> mkdir test sftp> cd test/ sftp> pwd Remote working directory: /home/sword/test sftp> put test/* . #但这样的传输方式如果遇到在test目录下还存在子目录的话,传输就会失败,提示要传输的目标不是文件,最好的方法是添加-r参数,如下 sftp> put -r test/ . #5.从sword下载filetest文件到本地当前目录 sftp> get filetest ./ Fetching /home/sword/filetest to ./filetest #6.从sword下载目录到本地,最好的方法同样是在本地先建立一个同名文件夹,然后进入这个文件夹,之后再将远程对应文件夹中的文件全部复制到本地文件夹中 sftp> lpwd Local working directory: /home/qing sftp> lmkdir test sftp> lcd test sftp> get test/* . #在sftp中对本地操作时需要在命令加上l前缀(local),比如lls就是显示本地目录内容,更多支持的命令请查阅help。
Ps:scp和sftp上传下载都会覆盖指定目录中同名的文件,所以请确保文件名没有重复再传输。