Linux中的SSH密钥登录连接
简单两步走如果不想看那么多原理,可以简单两步走
输入以下命令
12345ssh-keygencd .sshcat id_rsa.pub >> authorized_keyschmod 600 authorized_keyschmod 700 ~/.ssh
下载对应密钥id_rsa即可,后续就可以密钥登录
设置 SSH 通过密钥登录
我们一般使用 PuTTY 等 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。下面来讲解如何在 Linux ...
Linux中修改用户UID和组GID的方法
我在部署nfs的时候,共享了一个文件夹。为了让远程nfs客户端挂载这个文件夹的时候都有可读写权限,我需要把服务器上的用户uid、gid设置成nfs服务端文件夹一样的权限。不过因为之前新建的用户uid、gid都是系统自动生成的,几台服务器之前某个用户的uid、gid可能都不一样,所以现在需要把这个uid、gid都设置成统一某个值。
修改用户uid和组gid的命令分别是usermod和groupmod,思路很简单。先使用usermod修改用户的uid,然后使用groupmod修改组的gid,最后使用chown和chgrp命令修改原来用户文件和目录的属主属组。例如测试用户foo和测试组foo。
1234foo old UID: 1005foo new UID: 2005foo old GID: 2000foo new GID: 3000
命令:1、修改foo用户的uid1usermod -u 2005 foo
2、修改foo组的gid1groupmod -g 3000 foo
3、foo用户的家目录下面的文件属主和属组会在1、2命令执行后自动修改成新的uid、gid对应的属主属组,但是其他文 ...
Linux安全配置Fail2ban
风险暴露所有连接到互联网的服务器都面临恶意软件攻击的风险。连接到互联网的软件可能成为攻击者蛮力尝试的目标,试图访问应用程序。
使用Fail2ban工具Fail2ban是一个开源工具,可帮助保护Linux免受暴力攻击和其他自动攻击。它通过监视服务日志中的恶意活动来工作,使用正则表达式扫描日志文件。
工作原理
扫描日志文件,匹配特定模式的记录。
计数匹配记录,当数量达到预定义阈值时采取措施。
在指定时间段内禁止有问题的IP。
默认使用系统防火墙阻止被禁止IP的访问。
禁止期限到期后,IP地址将从禁止列表中删除。
安装和配置Fail2ban如果需要更新和升级服务器,执行以下命令:123sudo apt-get updatesudo apt-get upgradesudo apt-get install -y fail2ban
在root状态下,编辑Fail2ban的配置文件:1vim /etc/fail2ban/jail.local
配置文件内容如下(注意修改ssh端口和sshd日志路径):12345678910111213[sshd]port = 2223enabled = truefi ...
Linux创建用户、设置密码
创建用户由于每台服务器都需要连接到 NAS,而且可能很多用户在不同的服务器上都有账号,这样的话就会导致 uid 冲突(不同服务器上不同用户的 uid 可能是一样的),因此,针对不同情况需要用到不同添加用户的方法:
该用户为新同学,说明他之前在其他服务器上没有账号,因此,先在 NAS 上为他开一个账号确保 uid 唯一性,再根据这个 uid 去其他的服务器上进行开号。
该用户在其他服务器上有账号,那就直接根据他的 uid 进行开号,无需再经过一遍 NAS。
开号方式使用命令 useradd ,默认情况下直接 useradd user1 就可以了,用户目录为 /home/user1,但是考虑到服务器硬盘容量有限,最好将其划分到具有更大空间的目录如 /data,因此使用如下命令进行自定义添加用户在服务器中,可以通过 df -h 来查看磁盘空间,默认uid和gid为同一个
12$ groupadd user1 -g [gid]$ useradd -u [uid] -g [gid] -d /data/user1 -m -s /bin/bash user1
选项
含义
-u U ...
Linux常用技巧及命令(不断更新)
常用命令
命令
command
查看 GPU 使用状态
nvidia-smi
gpustat -i (需 pip install gpustat)
nvitop(需pip install nvitop)
查看进程
top、htop、ps -ef
grep [pid]
查看服务器磁盘容量
df -h
查看自己占用服务器的容量
du -h
查看当前目录下文件个数 (不包含子目录)
ls -l
grep “^-“
wc -l
查看端口占用 (Linux)
lsof -i:PORT (没有空格)
查看端口占用 (Windows)
查看所有开放端口: netstat -ano 查看占用端口程序的 PID:netstat -aon
findstr “PORT” 查看占用端口的 PID 所对应的程序:tasklist
findstr “PID” 杀死占用端口的进程:taskkill /T /F /PID “PID”
Linux的Vim常用快捷键https://www.runoob.com/w3cnote/all-vim-cheatsheat.html
...
Linux服务器联网攻略
背景学校的个人账号只能在一台设备上进行认证联网,但是我们使用的 GPU 服务器经常需要访问互联网,在服务器上认证之后我们自己的电脑就会掉线,所以可以通过代理的方式让服务器通过我们自己的设备进行联网,解决这个问题。以下所有的方法,实际上让服务器可通过代理本地网络上网(解决服务器连不上网时使用)
此文档是借鉴实验室的师兄的文档完善而来,在这里感谢木子李!!!
设置http代理首先在自己本机电脑上,查看自己的ip地址,在当前终端进行输入123export http_proxy=http://ip:7890export https_proxy=https://ip:7890curl cip.cc # 有输出说明成功代理到了若希望不用每次终端都需要设置,也可以把export的部分写入~/.bashrc中,设置后进行source ~/.basrc即可
这里面的7890端口是通过clash进行转发的,可以进行下载clash
除此之外,也需要设置代理软件才能让服务器访问到网络,在 clash 中打开 Allow LAN, v2ray 中打开 允许局域网的连接 就行了。这样我们的设备可以访问的东西 ...
Linux服务器之间文件传输
SCP命令正常情况下使用SCP命令12# 将服务器文件传输到本地scp -r user@ip:服务器文件夹 本地文件夹12# 将本地文件传输到服务器scp -r 本地文件夹 user@ip:服务器文件夹
使用密钥使用密钥时,需要添加一个-i的参数,并输入对应密钥的密码即可1scp -i 对应密钥地址 -r user@ip 本地文件夹如果出现Permissions 0644错误,则运行chmod 400修改一下权限即可1chmod 400 密钥地址
增加端口port1scp -r -i 对应密钥地址 -P 端口号 user@ip:服务器文件夹 本地文件夹
Linux的 shell无法自动补全命令
在ubuntu上使用useradd新建了一个用户,发现用新建的用户登陆无法使用tab键补全,这个问题是否让人恼火,所以来解决一下。
一、问题这是因为shell的解释器不是bash,需把shell的解释器更改为bash
二、两种解决方法1)方式一
新建一用户lqding,切换到该用户下
123root@lqding:~# su - lqding$ echo $USERlqding
提示符仅仅是一个$ ,很奇怪。输入命令,用TAB键也无法补全命令。并且没有命令历史功能。
使用root用户看passwd文件
123root@lqding:~# grep lqding /etc/passwdlqding:x:1000:1000::/home/lqding:/bin/shroot@lqding:~#
原来lqding用户默认的shell是/bin/sh 将其改为/bin/bash后
12345root@lqding:~# vi /etc/passwdroot@lqding:~# grep lqding /etc/passwdlqding:x:1000:1000::/home/lqding:/bi ...
Linux 硬盘空间清理
Linux 硬盘空间清理0. 删除Docker一些无用的镜像在日常使用Docker时,会经常生成大量的镜像文件。这些镜像文件如果不加以管理,可能会占用大量的硬盘空间,导致系统性能下降。为了有效地释放硬盘空间,定期删除无用的Docker镜像是非常重要的。以下是一些删除无用Docker镜像的方法和步骤:
0.1 删除悬空(Dangling)镜像悬空镜像是指那些不再被任何容器使用的中间层镜像,通常由旧版本的镜像生成,随着时间的推移,这些悬空镜像会占用大量的磁盘空间。可以使用以下命令删除它们:
1docker image prune
这条命令会提示你是否要删除所有未被使用的镜像,输入y确认即可。这个命令非常安全,因为它只会删除不再被容器使用的镜像。
如果想要跳过确认步骤,可以使用以下命令:
1docker image prune -f
0.2 删除所有未使用的镜像如果你想要删除所有未被任何容器使用的镜像(不仅仅是悬空镜像),可以使用以下命令:
1docker image prune -a
此命令将删除所有不被当前容器使用的镜像,无论它们是否是悬空的。要小心使用此命令,因为它会删除大量的镜像,可 ...
如何在Linux服务器上安装Anaconda(超详细)
安装Anaconda1.1 下载anaconda的安装包这里我们需要在官网上查找自己需要的版本,地址链接在下面:https://repo.anaconda.com/archive/这里以我自己安装的版本为例:https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh这是我选择的版本,然后我们在控制台输入这句话:1wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh如果没有出现问题就是下面图示:如果出现问题就按照 1.2 步骤操作。
1.2 解决安装出现的bug当我们输入1.1的那一条命令时,有些人可能会出现下面这样的错误:1bash: wget: command not found当然这也是我自己出现的错误,具体解决办法如下: Debian/Ubuntu系统,需要执行以下命令:1apt-get install -y wget相反,CentOS系统则需要输入下面指令:1yum install wget -y
1.3 安装a ...