一些ubuntu的使用心得

less than 1 minute read

Published:

远程机器设置网络共享文件夹

对于一个vscode+ssh 且习惯了windows GUI的用户来说,一只脚直接踩进纯命令行的操作模式多半会摔得很惨。但是无奈用vscode+ssh远程操作ubuntu服务器是必备技能,你也不想用本机跑实验吧?

vscode本身提供了一些图形化界面,在许多时候就够用了。但vscode一个我不那么喜欢的点是打开文件夹机制——左边文件树只能看当前vscode工作目录下的文件。比如我代码放在某个地方,data放在另一个遥远的地方。vscode打开它们的LCA显然不是很方便(新建终端默认打开当前工作目录,你搞不好还得cd进去) 这就很烦,你就没法用GUI管理其他地方的文件了。

这个时候网络共享文件夹应运而生。本质上类似于你用你的ubuntu远程机器搭了个NAS。你就可以跨平台的管理文件了,windows下只需要映射网络驱动器,它可以为所有分区格式提供统一的管理方式。windows下就用windows的方式,ubuntu就用ubuntu,直接用win的资源管理器,比幽默winscp不知道爽多少

只需要安装一下samba就可以了,手把手教程链接: https://blog.csdn.net/JQ1516/article/details/139247352

上述方法已挂 查了一圈,应该是因为之前勒索病毒用了SMB的445端口,导致445端口被运营商ban了。测试是否可用,可以telnet IP 445试一试,别的端口都跑的通,445就不行。 比较讨厌的是,win下的smb客户端程序使用445端口是写死的,这意味着在服务端改了端口还没用。

https://blog.csdn.net/babytang008/article/details/120489133

https://blog.csdn.net/weixin_39959298/article/details/111268699?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-3-111268699-blog-120489133.235%5Ev43%5Epc_blog_bottom_relevance_base2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-3-111268699-blog-120489133.235%5Ev43%5Epc_blog_bottom_relevance_base2&utm_relevant_index=6

https://www.cnblogs.com/Ridiculer/p/15333284.html

我找了一圈教程,多半是教你用改个端口,然后win下本地端口映射,但是试了一下发现还是不行。

于是曲线救国,改用SFTP协议来搞

在ubuntu下安装vsftpd服务

sudo apt install vsftpd

后续参考 https://www.yisu.com/ask/42828956.html https://www.cnblogs.com/caotao0918/p/9965858.html 需要注意几个点: 把你想共享的文件夹在配置文件里面添加local_root,并且确保它有所有权 ubuntu不需要改太多防火墙之类的东西

然后win上就添加网络位置,搞定

在远程机器后台运行命令

一般用nohup XXX,单个命令可以后面加个 &,直接后台运行,也可以nohup运行以后再Ctrl+Z ,会挂起转后台,再输入bg命令运行后台进程即可。 多个命令,最好直接新建一个文件,把命令都写在里面,改文件名为.sh,即bash脚本,然后直接nohup运行这个脚本即可。

2025.3.19踩坑:

nohup rsync似乎仍然会随着bash关闭而终止。所以还需要用jobs调出工作号,然后使用disown %(id) 命令来将rsync指令划归别的进程监视。

远程ssh认证校园网

11.13修改 小丑了,北大校园网提供了一个bash认证网关的接口,但是教程在下载专区 分页里头… https://its.pku.edu.cn/download_ipgwclient.jsp

  curl -X POST  -d 'cmd=open&username=**********&password=******&iprange=free' https://its4.pku.edu.cn/cas/ITSClient
  import requests
  url = "https://its4.pku.edu.cn/cas/ITSClient"
  payload = {
      # 填写账号和密码
      'username': '********',
      'password': '********',
      'iprange': 'free',
      'cmd': 'open'
  }
  headers = {'Content-type': 'application/x-www-form-urlencoded'}
  result = requests.post(url, params=payload, headers=headers)
  print(result.text)

以下为原内容 背景:你能ssh连工位linux服务器,但你想给linux服务器认证校园网,但你没法ssh打开浏览器。

目前只是大概的试了一下,还不知道是不是真的可行,原理是利用ssh的本地转发功能 https://blog.csdn.net/weixin_44290152/article/details/116424598

首先ssh服务器,wget学校的认证网站(例如北大是its.pku.edu.cn),返回的信息里面有 ip地址:端口

打开cmd,输入 ssh -L X:ip地址:端口 ssh的账户@你的服务器ip

这个X是转发到你当前用的电脑的端口号,可以随便设一个不用的就行,例如10086。 打开浏览器,输入127.0.0.1:10086,就能跳转到认证界面,认证即可。

这样有一个问题,尽管IP没问题,认证似乎会识别你的设备号和系统类型,这个可能就涉及到改请求头之类的,我还不会….

命令行挂载、弹出U盘

查看硬盘情况

sudo fdisk -l

找到你的U盘的位置,一般是什么/dev/sdX,其中X为a,b,c,d,…,它下面可能有具体的分区,如sdX1,sdX2…,找到真正的那一个,以sdX1为例

随后在/mnt/文件夹下新建一个文件夹用来挂载,例如/mnt/USB,然后

sudo mount /dev/sdX1

完事。 用完以后需要弹出U盘,方法参考https://blog.csdn.net/qq_37227125/article/details/94882056 建议直接安全删除驱动器

udisksctl unmount -b /dev/sdX1					//卸载挂载点。相当与(umount /devsdc1)
udisksctl power-off -b /dev/sdX1				//安全关闭驱动器
ll /dev/sd*
这里 /dev/sdX1 和 /dev/sdX 都消失了(因为已经被安全分离)

复制文件查看进度

rsync -ah --info=progress2 SourceDir TargetDir