写在前面
在项目中会涉及到连接工控机,远程自己电脑拿东西,要使用没有显示器的板子等情况。
所以这里记录一些ssh和scp使用记录。教程很多,这里总计实际用法场景case笔记自我记录和实用技巧。
SSH
ssh连接之前需要读取ip地址,我使用的场景,两台电脑在同一局域网下,linux使用ifconfig (没有安装的话按照提示步骤安装即可) 为windows下使用ipconfig(其实windows互联可以使用网络远程连接,功能更强大)。
以linux为例子,
以上为有线网的地址。 如果使用的是无线条网则找wlp下的inet。
我主机是有线第一图,远程是笔记本第二图。
于是在主机使用 ssh 用户名@ipadress
输入密码后接入。此时可以使用远程电脑内的东西
#可以使用Ctrl+D 退出ssh状态
SCP
和ssh同理,这里是为了在两台电脑间移动文件
scp -r kaifengqu@10.19.94.39:~/Desktop/H06CodeinROSEnv/src/H09networkEstimation /home/cutekaifeng/Remote/
拷贝成功!
这里我使用scp从目标地址移动一个文件夹(迭代-r),到我本地电脑romote文件夹下。可以使用相对路径。
但这里有一个问题,比如我不知道或者目标文件在远程电脑一个复杂路径下怎么办:
我询问了GPT 想了解最方便的方法如下:
A:
如果目标文件在远程电脑的一个复杂路径下,你可以采取一些策略来方便地使用 scp。以下是一些建议:
- 使用 SSH 配置文件
在本地电脑上设置 SSH 配置文件,以便简化 scp 命令。编辑或创建 ~/.ssh/config 文件,添加类似如下的配置:
Host myremote
HostName remote_host
User username
Port 22
将 remote_host 替换为远程主机的地址,username 替换为你在远程主机上的用户名。现在,你可以使用简化的 scp 命令:
scp myremote:/path/to/remote/file /path/to/local/directory
- 使用 Tab 补全 (gpt回答的不对,scp时候在连接之前没法补全)
在本地命令行中,使用 Tab 补全可以快速浏览和选择文件路径。在输入 scp 命令时,输入部分路径,然后按 Tab 键,系统将尝试补全路径。
scp username@remote_host:/path/to/compl[TAB]
对于远程主机的路径,如果你尚未连接到远程主机,本地的 Tab
补全功能无法直接访问远程主机的文件系统,因为这需要与远程主机建立连接并获取文件系统的信息。不过,你可以通过在本地使用 ssh 命令登录到远程主机后,利用远程主机上的 Tab 补全功能来帮助你输入远程路径。
在登录到远程主机后,在远程主机的命令行界面上,你可以使用 Tab 键来补全远程文件路径。当你开始输入路径时,按下 Tab
键将自动补全路径或显示可能的选项。这种方式可以帮助你快速找到远程主机上复杂路径下的文件或目录,并将其用于 scp 命令。另外,如果你有远程主机的访问权限,也可以尝试通过其他方式,如使用 ls、cd
等命令在远程主机上浏览文件系统,找到你需要传输的文件路径。找到路径后,你可以复制路径并在本地 scp 命令中粘贴使用。
追问说明,这东西只能ssh去找他文件 pwd复制出来
- 使用通配符
如果你知道文件名,但不确定路径,你可以使用通配符来匹配文件。例如,将所有以 “file” 开头的文件复制到本地目录:
scp username@remote_host:/path/to/files/file* /path/to/local/directory
所有命令和例子概览
拷贝于 gpt
SSH (Secure Shell):
连接到远程主机:ssh username@hostname
例如:ssh user@example.com
使用不同的端口连接到远程主机:ssh -p port username@hostname
例如:ssh -p 2222 user@example.com
指定要使用的身份验证密钥:ssh -i path/to/private_key username@hostname
例如:ssh -i ~/.ssh/id_rsa user@example.com
在连接过程中启用压缩:ssh -C username@hostname
保持SSH会话活动:ssh -o TCPKeepAlive=yes username@hostname
SCP (Secure Copy):
将本地文件复制到远程主机:scp /path/to/local/file username@hostname:/path/to/remote/location
例如:scp file.txt user@example.com:/home/user/documents/
从远程主机复制文件到本地:scp username@hostname:/path/to/remote/file /path/to/local/location
例如:scp user@example.com:/home/user/file.txt /local/directory/
使用不同的端口复制文件:scp -P port /path/to/local/file username@hostname:/path/to/remote/location
例如:scp -P 2222 file.txt user@example.com:/home/user/documents/
递归地复制整个目录:scp -r /path/to/local/directory username@hostname:/path/to/remote/location
例如:scp -r directory user@example.com:/home/user/
从远程主机复制整个目录到本地:scp -r username@hostname:/path/to/remote/directory /path/to/local/location
例如:scp -r user@example.com:/home/user/directory /local/directory/