Linux常用指南

本文介绍了在Ubuntu系统中处理SSH连接问题、ROS2的一键安装与卸载方法,涉及密钥生成、SSH配置、输入法设置、用户和组管理,以及常见问题的解决策略。
摘要由CSDN通过智能技术生成

目录

Ubuntu挂起

ROS2

一键安装

一键卸载

查看信息

SSH

安装

生成密钥

生成known_hosts

遇到问题

编译问题

问题一

更新 CMakeLists.txt

修改导入目标的属性

更换源

ubuntu22.04

ubuntu18.04

添加输入法

fcitx5环境及步骤

输入法包安装

新建用户

修改用户权限(添加root权限)

​编辑

增加用户到某个组里

创建一个用户组,用户名称:dockergroup

删除用户


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-configfind_package,确保 PKG_CONFIG_PATH 环境变量包含了 GStreamer 的 .pc 文件所在的路径:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/path/to/gstreamer/pkgconfig

然后在 CMakeLists.txt 中,你可以通过调用 find_packagepkg_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)。

要解决这个问题,你可以尝试以下步骤:

  1. 移除有问题的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的行。

  2. 更新软件包列表: 在移除PPA后,运行apt update来更新软件包列表:

    sudo apt update
  3. 安装CMake: 如果你移除该PPA是因为想安装CMake的最新版本,你可以尝试从官方的Ubuntu软件库安装CMake(可能不是最新版本),或者从官方CMake网站下载并安装最新的CMake版本。

    从Ubuntu软件库安装:

    sudo apt install cmake

    或者,你可以访问CMake的官方下载页面(https://cmake.org/download/)来下载并安装最新版本的CMake。

  4. 可选:添加官方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系统时候,选择中文,就直接是这个配置。

c7c5fa744ee4496489a0266da4fa7e28.png

图中的“键盘输入法系统”,需要命令行下载一下才有选项。 整个复制下面命令,在命令窗口运行⭐(操作一)

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

e83551c8ec7844e5ae725313445ac3f3.png

到此,新用户创建成功,并且用户目录被创建,权限也分配成功。如下图所示:

1460c575c7ac451699c4288de3c962aa.png

增加用户到某个组里

创建一个用户组,用户名称: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即可。

  • 20
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

踏马潜行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值