Linux 远程登录和复制文件

SSH 基础

关机/重新启动:ssh 用户名@ip
远程复制文件 :scp 用户名@ip:文件名或路径

在Linux中SSH是非常常用的工具,通过SSH客户端我们可以连接到运行了SSH服务器的远程机器上
数据传输是加密的,可以防止信息泄露;数据传输是压缩的,可以提高传输速度
SSH客户端使用Secure Shell协议连接到远程计算机的软件程序,能够防止DNS欺骗和IP欺骗
SSH服务器的默认端口号是22,默认端口号在连接的时候可以省略。
Web服务器:80
HTTPS:443
FTP服务器:21

SSH客户端的简单使用

ssh [-p port] user@remote

user是在远程机器上的用户名,如果不指定则默认为当前用户
remote是远程机器的地质,可以是ip/域名
port是SSH Server监听的端口,如果不指定则默认为22
tips:使用exit退出当前用户的登录

SCP

scp就是Secure copy,是一个在linux下用来远程拷贝文件的命令
它的地址格式与SSH基本相同,在指定端口时用的是大写的-P,而不是小写的。
例1:

1
2
3
scp -P port 01.py user@remote:Desktop/01.py  
# 把本地当前目录下的01.py 文件复制到远程家目录下的Desktop.py
# 如果:后面的路径不是绝对路径,则以用户的家目录作为参照路径

例2:

1
2
3
# 加上-r选项可以传送文件夹
# 把当前目录下的demo 文件夹复制到远程家目录下的Desktop
scp -r demo user@remote:Desktop

ssh和scp这个两终端命令只能在Linux或者Unix系统下使用
如果是windows系统中,可以安装PuTTy 或者 XShell 客户端软件即可

SSH免密码登录与配置别名 (通常只需配置一次)

tips:有关SSH配置信息都 保存在用户家目录下的.ssh目录下

免密码登录

配置公钥:ssh-keygen 即可生成SSH钥匙,一路回车即可。
上传公钥到服务器: 执行ssh-copy-id -p port user@remote可以让远程服务器记住我们的公钥

本地使用私钥对数据进行加密/解密
服务器使用公钥对数据进行加密/解密

配置别名

用别名替换 user@remote和port等很方便。
~/.ssh/config 里面追加:

1
2
3
4
Host name
HostName ip地址
User 服务器名称
Port 22

练习

背景: 想把服务器上的题目数据导入到NYOJ,在Windows下操作太过麻烦。

不用登录服务器,直接在本地终端即可完成,在建立传输时需要输入服务器登录密码。

步骤
  • 先把服务器上的数据下载到本地。
  • 目录: /home/judge/data
  • 在本地/home/liuyuqiang0下新建一个目录data: mkdir/home/liuyuqiang0/data
  • 在终端下使用scp命令远程复制文件:[liuyuqiang0@localhost ~]$ scp -r ubuntu@ip:/home/judge/data /home/liuyuqiang0/data
  • 查看对应文件,等待传输完成。
  • 对应文件保存位置: /home/liuyuqiang0/data/data # 早知道不建立data目录了,直接在~目录下下载。。
  • 目前只使用过上述格式的命令,
    • 对于: scp -r /home/judge/data ubuntu@ip /home/liuyuqiang0/data 格式还没有使用过