目录
Ubuntu挂起
/etc/systemd/logind.conf
HandleLidSwitch=suspend
改为
HandleLidSwitch=ignore
ROS2
一键安装
wget http://fishros.com/install -O fishros && . fishros
一键卸载
sudo apt remove ros-foxy-* && sudo apt autoremove
sudo apt remove ros-humble-* && sudo apt autoremove
查看信息
ros2 doctor --report
SSH
查看服务
如果你遇到无法通过SSH连接到服务的问题,这里提供一个故障排除的步骤列表,来帮助你诊断并解决问题。
1. 检查SSH服务状态
首先,检查SSH服务器是否正在运行。你可以在服务器上使用以下命令来检查SSH服务(通常为 sshd
)的状态:
1sudo systemctl status sshd
如果服务未运行,可以尝试启动SSH服务:
1sudo systemctl start sshd
如果你使用的是没有systemd的系统,可以尝试以下命令:
1sudo service sshd status 2sudo service sshd start
或者:
1sudo /etc/init.d/sshd status 2sudo /etc/init.d/sshd start
2. 检查网络连接
确保你的计算机和服务器之间的网络连接是正常的。你可以使用 ping
命令来测试网络连通性:
1ping [服务器的IP地址或主机名]
如果 ping
命令失败,这意味着你的计算机无法到达目标服务器。这时候需要检查网络设置和连接。
3. 检查防火墙设置
在服务器端和客户端是否有防火墙规则阻止了SSH连接:
- 在服务器端,检查是否有防火墙规则阻止了SSH端口(默认为端口22):
1sudo ufw status
或者使用 iptables
:
1sudo iptables -L
- 在客户端,检查是否有本地防火墙规则或者安全软件阻止了出站SSH连接。
4. 验证SSH端口
确保SSH服务器监听的是正确的端口,可以通过查看 sshd
配置文件确定:
1cat /etc/ssh/sshd_config | grep Port
默认端口是22,但有时可能会被更改为别的端口。
5. 使用更详细的日志信息调试
在尝试连接时,可以在客户端用 -v
参数来获取更详细的输出信息,这可以帮助诊断具体是什么问题:
1ssh -v [用户名]@[服务器的IP地址或主机名]
查看输出中提到的错误信息,它可以指明连接失败的原因(例如认证错误、连接超时等)。
6. 检查权限
某些权限问题也可能导致SSH连接失败。确保你的服务器上的 ~/.ssh/
目录和相关文件(如 authorized_keys
)的权限设置正确:
1chmod 700 ~/.ssh 2chmod 600 ~/.ssh/authorized_keys
7. 检查认证信息
如果使用密钥认证,确保你的私钥在客户端机器上是可用的,且服务器的 authorized_keys
文件包含了对应的公钥。
8. 查看日志文件
客户端和服务器端的SSH日志可以提供有用信息:
- 在服务器端,SSH日志通常包含在
/var/log/auth.log
、/var/log/secure
或/var/log/sshd
。 - 在客户端,
-v
参数提供的详细输出包含了客户端的日志信息。
查看这些日志文件,可能能找到SSH连接失败的原因。
9. 检查认证尝试次数
如果尝试了多次错误的认证,某些服务器配置会阻止来自该IP的进一步尝试。如果怀疑是这种情况,可以尝试重置或从另一个IP地址尝试连接。
按照这些步骤检查和排除问题,通常可以解决SSH连接问题。如果问题仍然存在,可能需要更深入地检查服务器配置和网络环境。
安装
sudo apt install openssh-server
sudo systemctl status ssh
sudo systemctl enable --now ssh
sudo systemctl disable --now ssh
生成密钥
ssh-keygen -t rsa -C "xx@alibaba-inc.com"
1.参数解释:
-t 表示ssh的密钥类型,常用的有:rsa、ed25519、dss。
-C 注释或称名称标识,此值随意。
注:
①在Linux、macOS系统下直接在命令行中输入上述命令即可。
②在Windows系统下需要安装Linux模拟环境,最简单的方式就是安装Git。Git的如下目录中已经默认安装了文件:usr/bin/ssh-keygen.exe。所以在Git Bash命令行里直接输入上述命令也可以生成密钥。
2.执行上述命令后,根据出现的提示连续按3次回车键即可。
3.在用户根目录下的.ssh目录下可以看到生成2个文件:id_rsa(私钥文件)、id_rsa.pub(公钥文件)。我们需要的是公钥文件。
注:
①私钥和公钥的文件名称是根据命令中输入的密钥类型来命名的,比如类型为ed25519,则会生成id_ed25519和id_ed25519.pub文件。
②在Linux系统下的路径一般是:/home/username/.ssh/id_rsa.pub。
③在macOS系统下的路径一般是:/Users/username/.ssh/id_rsa.pub。
④在Windows系统下的路径一般是:C:/Users/username/.ssh/id_rsa.pub。
生成known_hosts
命令 ssh-keygen -f "/home/wp/.ssh/known_hosts" -R "192.168.1.10" 在 SSH(安全外壳协议)中用于管理已知主机文件。这里具体的命令含义如下:
-f "/home/wp/.ssh/known_hosts": 这个参数指定了 known_hosts 文件的路径。known_hosts 文件是SSH客户端存储它之前连接过的远程主机的SSH指纹的地方。SSH客户端利用这个文件来验证未来连接中主机的身份。
-R "192.168.1.10": 这个参数告诉 ssh-keygen 从 known_hosts 文件中删除所有属于指定主机名或者IP地址的密钥。在这个例子中,指定的是IP地址 192.168.1.10。
当你连接到SSH服务器时,服务器的主机密钥会被存储在 known_hosts 文件中。如果主机密钥发生变化(这可能发生在服务器重新安装或SSH服务器的密钥重新生成的时候),SSH客户端会警告你存储的密钥与 known_hosts 文件中的密钥不匹配。这是为了防止中间人攻击的安全特性。
如果你知道主机密钥的变化是合法的(例如,服务器被有意重新配置了),你可以使用上面的命令从 known_hosts 文件中删除旧的密钥。删除条目后,当你下次连接到该主机时,SSH客户端会将其视为一个新主机,要求你确认添加新密钥,并且会将新的指纹存储在 known_hosts 文件中。
ssh-keygen -f "/home/wp/.ssh/known_hosts" -R "192.168.1.10"
遇到问题
问题描述:
with **** port 22: no matching host key type found. Their offer: ssh-rsa
具体做法:
到当前用户目录下的.ssh文件中创建config文件(config没有后缀),使用记事本打开添加如下
~/.ssh/config
Host *
HostkeyAlgorithms +ssh-rsa
PubkeyAcceptedKeyTypes +ssh-rsa
编译问题
问题一
CMake Error in CMakeLists.txt:
Imported target "PkgConfig::GST" includes non-existent path
"/usr/local/include/gstreamer-1.0"
in its INTERFACE_INCLUDE_DIRECTORIES. Possible reasons include:
* The path was deleted, renamed, or moved to another location.
* An install or uninstall procedure did not complete successfully.
* The installation package was faulty and references files it does not
provide.
需要重新指定自定义安装路径
更新 CMakeLists.txt
根据 GStreamer 实际安装的路径,你可能需要在 CMakeLists.txt
中更新路径设置。如果你使用 pkg-config
和 find_package
,确保 PKG_CONFIG_PATH
环境变量包含了 GStreamer 的 .pc
文件所在的路径:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/path/to/gstreamer/pkgconfig
然后在 CMakeLists.txt
中,你可以通过调用 find_package
或 pkg_check_modules
来加载 GStreamer 的配置:
find_package(PkgConfig)
pkg_check_modules(GST REQUIRED gstreamer-1.0)
修改导入目标的属性
如果上面的方法不起作用,或者你的项目直接设置了导入目标的属性,你可以使用 set_target_properties
来更改 INTERFACE_INCLUDE_DIRECTORIES
的值:
set_target_properties(PkgConfig::GST PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "/path/to/custom/gstreamer/include"
)
在这里,把 /path/to/custom/gstreamer/include
替换成 GStreamer 实际的安装路径(绝对路径)。
完成上述修改后,重新运行 CMake,看看问题是否解决。如果仍然有问题,请根据 CMake 的输出进行进一步的调试。
问题二
E: 仓库 “http://ppa.launchpad.net/george-edison55/cmake-3.x/ubuntu bionic Release” 没有 Release 文件。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节
该错误发生是因为你尝试访问的PPA(个人软件包存档)可能不再存在,或者不支持你所使用的Ubuntu版本(在这个例子中是Ubuntu 18.04,代号Bionic)。
要解决这个问题,你可以尝试以下步骤:
-
移除有问题的PPA: 你可以使用
add-apt-repository
命令来移除这个PPA:sudo add-apt-repository --remove ppa:george-edison55/cmake-3.x
如果这个命令不能工作,你也可以直接编辑
/etc/apt/sources.list
文件或者/etc/apt/sources.list.d/
目录下的相关文件来移除引用该PPA的行。 -
更新软件包列表: 在移除PPA后,运行
apt update
来更新软件包列表:sudo apt update
-
安装CMake: 如果你移除该PPA是因为想安装CMake的最新版本,你可以尝试从官方的Ubuntu软件库安装CMake(可能不是最新版本),或者从官方CMake网站下载并安装最新的CMake版本。
从Ubuntu软件库安装:
sudo apt install cmake
或者,你可以访问CMake的官方下载页面(https://cmake.org/download/)来下载并安装最新版本的CMake。
-
可选:添加官方CMake APT仓库: CMake提供了官方APT仓库,你可以从中安装最新的CMake。按照以下步骤添加CMake仓库并安装CMake:
# 首先,添加CMake的官方APT仓库GPG密钥 sudo apt-key adv --fetch-keys https://apt.kitware.com/keys/kitware-archive-latest.asc # 然后,添加CMake的官方APT仓库 sudo apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' # 更新软件包列表 sudo apt update # 安装CMake sudo apt install cmake
执行上述任一步骤后,错误应该会被解决。如果你选择添加官方CMake APT仓库,你将能够安装并使用较新版本的CMake。
更换源
ubuntu22.04
sudo vi /etc/apt/sources.list
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
ubuntu18.04
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
添加输入法
fcitx5环境及步骤
软件点击“语言支持”,然后里面选择中文和英语,一般情况下安装ubuntu22.04系统时候,选择中文,就直接是这个配置。
图中的“键盘输入法系统”,需要命令行下载一下才有选项。 整个复制下面命令,在命令窗口运行⭐(操作一)
sudo apt install fcitx5
fcitx5-chinese-addons
fcitx5-frontend-gtk3 fcitx5-frontend-gtk2
fcitx5-frontend-qt5 kde-config-fcitx5
它意思是安装了三部分基本内容: Fcitx 5 主程序 中文输入法引擎 图形界面相关
输入法包安装
以上安装好fcitx5框架了,接下来安装输入法。这两个命令,选择一个运行就行了⭐(操作四)省事点可以全安装:
sudo apt install fcitx5 fcitx5-*
或者简化一下只需要以下安装,也就足以正常输入中文了:
sudo apt install fcitx5 fcitx5-frontend-qt5 fcitx5-frontend-gtk3 fcitx5-frontend-gtk2 fcitx5-chinese-
新建用户
#dongyuanxin_2016150127是用户名称
sudo useradd -r -m -s /bin/bash dongyuanxin_2016150127。
sudo passwd dongyuanxin_2016150127
其中参数的意义如下:
-r:建立系统账号
-m:自动建立用户的登入目录
-s:指定用户登入后所使用的shell
输入ls /home/,可以看到用户目录被成功创建了:
修改用户权限(添加root权限)
这里采用修改/etc/sudoers文件的方法分配用户权限。因为此文件只有r权限,在改动前需要增加w权限,改动后,再去掉w权限
sudo chmod +w /etc/sudoers
sudo vim /etc/sudoers
# 添加下图的配置语句,并且保存修改
sudo chmod -w /etc/sudoers
到此,新用户创建成功,并且用户目录被创建,权限也分配成功。如下图所示:
增加用户到某个组里
创建一个用户组,用户名称:dockergroup
groupadd docergroup
增加上面新建的用户账号到某个组里
usermod -g dockergroup docker
这里docker是用户名,相当于上面的dongyuanxin_2016150127;
删除用户
删除用户的操作分为 3 步:
1)执行userdel:
sudo userdel dongyuanxin_2016150127
2)删除用户目录:
sudo rm -rf /home/dongyuanxin_2016150127
3)删除用户权限相关配置:删除或者注释掉/etc/sudoers中关于要删除用户的配置,否则无法再次创建同名用户。
4)从某个组里取消这个用户
gpasswd -d username groupname
注意:如果直接用useradd添加用户的话,可能出现没有home下的文件夹,以及shell无法自动补全的显现。出现此问题只要修改/etc/passwd下的/bin/sh为/bin/bash即可。