渗透测试-Linux基础(1)
声明
学习视频来自 B 站UP主泷羽sec,如涉及侵权马上删除文章。
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。
这里写目录标题
文件管理
创建空文件
touch newfile
创建一个名为"newfile"的文件
删除文件
rm newfile
删除一个名为"newfile"的文件
新建目录
mkdir newdir
创建一个名为"newfile"的目录
删除目录
rmdir newdir
删除一个名为"newfile"的目录
重命名文件
mv www.txt ww.txt
将www.txt文件重命名为ww.txt
移动文件
mv ww.txt ww
将ww.txt文件移动到ww目录下面
拷贝文件
cp www.txt wwww.txt
将www.txt文件复制一份放到当前目录
软链接
介绍
软链接也叫符号链接,它是一个特殊的文件,这个文件包含了另一个文件或目录的路径名。可以把软链接看作是一个指向其他文件或目录的 “快捷方式”。它本身有自己独立的 inode,存储的是目标文件或目录的路径信息
语法
ln -s [目标文件或目录路径] [软链接文件名]
示例
ln -s /home/user/file.txt /home/user/soft_link.txt
软链接本身并不包含实际的文件内容,它只是指向目标文件。
软链接可以跨越文件系统,因为它只是记录了目标文件的路径,而不是直接关联目标文件的 inode。
软链接有自己独立的 inode。它所指向的目标文件有自己单独的 inode。例如,创建一个软链接soft_link.txt
指向file.txt
,soft_link.txt
的 inode 与file.txt
的 inode 是不同的。
当通过软链接访问文件并进行修改时,实际上是对目标文件进行修改。如果目标文件被移动或删除,软链接就会失效(成为一个悬空链接),除非重新建立指向新位置的链接。例如,如果file.txt
被移动到其他位置,soft_link.txt
如果不更新路径就无法正确访问文件。
硬链接
介绍
硬链接是文件系统中的多个文件名指向同一个物理文件(即 inode)。可以理解为给文件的物理存储位置取了多个名字。在 Linux 文件系统中,每个文件都有一个对应的 inode(索引节点),它存储了文件的元数据,如文件的大小、权限、所有者、时间戳等信息,同时也记录了文件内容存储的磁盘块位置。硬链接实际上是在目录中创建了一个新的目录项,这个目录项的 inode 号与被链接文件的 inode 号相同。
语法
ln [源文件] [硬链接文件名]
示例
ln /home/user/file.txt /home/user/hard_link.txt
由于硬链接指向的是同一个物理文件,所以对任何一个硬链接文件进行修改,实际上都是对同一个文件内容进行修改。例如,通过file.txt
写入数据后,在hard_link.txt
中查看文件内容,会发现内容是同步更新的,因为它们是同一个文件
硬链接不能跨越文件系统,因为不同的文件系统有独立的 inode 编号体系。
软链接有自己独立的 inode。它所指向的目标文件有自己单独的 inode。例如,创建一个软链接soft_link.txt
指向file.txt
,soft_link.txt
的 inode 与file.txt
的 inode 是不同的。
搜索文件
-
find 命令
-
功能:它是一个功能强大且非常灵活的文件搜索工具。可以根据文件的名称、类型、大小、权限、所有者、所属组、修改时间等各种属性来查找文件。
-
基本语法:
find [搜索路径] [搜索条件] [操作]
。find . -name "test.txt"
在当前目录及其子目录中查找名为
test.txt
的文件,“.” 表示当前目录,-name
是用于指定文件名的搜索条件,双引号中的内容是要查找的文件名。find ~ -mtime 2 -ls | sort -k9 -k10 | more
~
:这是一个快捷方式,表示当前用户的主目录。例如,对于用户user
,~
通常指向/home/user
。-mtime 2
:这是find
命令的一个时间选项。-mtime
用于根据文件的修改时间来查找文件。参数2
表示查找修改时间距离现在正好是两天的文件。如果想查找在过去两天内(包括两天)修改过的文件,可以使用-mtime - 2
;如果想查找修改时间超过两天的文件,可以使用-mtime +2
。-ls
:这是find
命令的一个动作选项。它会以类似ls -l
命令的长格式显示找到的文件的详细信息,包括文件类型、权限、硬链接数、所有者、组、大小、修改时间和文件名等内容。
sort -k9 -k10
部分sort
命令:用于对文本行进行排序。-k9 -k10
:-k
选项用于指定排序的关键字。-k9
表示以每行的第 9 个字段作为第一个关键字进行排序,-k10
表示以每行的第 10 个字段作为第二个关键字进行排序。在find -ls
输出的长格式信息中,第 9 个字段是文件大小,第 10 个字段是修改时间。所以这个命令实际上是先按照文件大小排序,文件大小相同的情况下,再按照修改时间排序。
more
部分more
命令:用于分页显示文本内容。当find
命令找到的文件信息较多时,more
命令可以让用户逐页查看这些信息,按回车键可以逐行查看,按空格键可以翻页。
find . -type f -iname '*.sh' -mmin -30 -ls
.
:表示当前目录,是查找操作开始的路径起点。也就是说,查找范围是当前目录以及它下面的所有子目录。-type f
:-type
是find
命令的一个选项,用于指定要查找的文件类型。这里的f
表示普通文件,即排除了目录、设备文件、符号链接等其他类型的文件,只查找普通的文本文件、二进制文件等这类常规意义上的文件。-iname '\*.sh'
:-iname
也是find
命令的选项,它类似于-name
,但-iname
在匹配文件名时不区分大小写。'*.sh'
是一个通配符模式,*
表示任意字符序列,所以-iname '*.sh'
的作用是匹配文件名以.sh
结尾的文件,无论文件名中的字母是大写还是小写。例如,它可以匹配test.sh
、TEST.SH
、aBc.sh
等文件。-mmin -30
:-mmin
是find
命令用于根据文件的修改时间来查找文件的选项。-30
表示查找在过去 30 分钟内被修改过的文件。如果是-mmin +30
,则表示查找修改时间超过 30 分钟的文件;如果是-mmin 30
,则表示查找修改时间刚好是 30 分钟之前的文件。
find / -user root -type f -perm -o=w -name '*.sh' 2>/dev/null
/
:表示根目录,是整个查找操作的起始路径,意味着要在整个文件系统(从根目录开始,包含其下所有子目录)中进行查找。-user root
:-user
是find
命令的一个选项,用于指定文件的所有者。这里-user root
表示只查找属于root
用户的文件。-perm -o=w
:-perm
是find
命令用于根据文件权限来查找文件的选项。-o=w
表示查找具有其他用户(除了文件所有者和所属组用户之外的用户)可写权限的文件。这里的-o
表示 “其他用户”(英文为 “others”),=w
表示可写权限。-name '\*.sh'
:-name
是find
命令用于指定文件名模式的选项。'*.sh'
是一个通配符模式,其中*
表示任意字符序列,所以-name '*.sh'
的作用是匹配文件名以.sh
结尾的文件。例如,它可以匹配test.sh
、script.sh
等文件。2>/dev/null
:这是一个输出重定向操作。在 Linux 中,文件描述符2
代表错误输出。>
是重定向符号,/dev/null
是一个特殊的设备文件,它会丢弃写入其中的任何数据。所以2>/dev/null
的作用是将命令执行过程中可能产生的所有错误输出都重定向到/dev/null
,使得在终端上看不到这些错误信息,只显示正常的查找结果(如果有的话)。
-
按文件类型搜索:使用
-type
选项可以按文件类型进行搜索。例如,要查找当前目录下所有的目录,可以使用find. -type d
;要查找所有的普通文件,可以使用find. -type f
。文件类型包括普通文件(f
)、目录(d
)、块设备文件(b
)、字符设备文件(c
)、符号链接(l
)、套接字(s
)和命名管道(n
)等。 -
按文件大小搜索:通过
-size
选项来实现。例如,要查找大小大于 10MB 的文件,可以使用find. -size +10M
。这里的 “+” 表示大于,“-” 表示小于,没有符号表示等于。单位可以是b
(字节)、k
(千字节)、M
(兆字节)、G
(吉字节)等。 -
按修改时间搜索:使用
-mtime
(修改时间)、-atime
(访问时间)或-ctime
(文件状态改变时间)选项。例如,要查找在过去 7 天内修改过的文件,可以使用find. -mtime -7
。
-
-
locate 命令
- 功能:该命令用于在整个文件系统中快速定位文件。它通过查询一个预先建立的数据库(这个数据库是由
updatedb
命令定期更新的)来查找文件,因此查找速度通常比find
命令快。 - 基本语法:
locate [文件名或部分文件名]
。例如,要查找包含test
这个关键词的文件,可以使用locate test
。 - 注意事项:由于它依赖于数据库,所以如果刚刚创建或移动了一个文件,而数据库尚未更新,可能会找不到该文件。在这种情况下,需要先运行
updatedb
命令来更新数据库。
- 功能:该命令用于在整个文件系统中快速定位文件。它通过查询一个预先建立的数据库(这个数据库是由
-
which 命令
- 功能:主要用于查找命令的可执行文件的位置。它会在环境变量
PATH
所指定的目录路径中查找指定的可执行文件。 - 基本语法:
which [可执行文件名]
。例如,要查找python
可执行文件的位置,可以使用which python
。这个命令在需要确定某个命令是从哪个目录执行的时候非常有用,特别是当系统中有多个同名的可执行文件位于不同的目录中时。
- 功能:主要用于查找命令的可执行文件的位置。它会在环境变量
-
whereis 命令
- 功能:它用于查找指定文件(包括可执行文件、源代码文件和帮助手册文件)的位置。它会在一些特定的目录(如
/bin
、/sbin
、/usr/bin
、/usr/sbin
、/usr/local/bin
等)中进行搜索。 - 基本语法:
whereis [文件名]
。例如,要查找gcc
文件的位置,可以使用whereis gcc
。它会返回gcc
的二进制文件、源代码文件和帮助手册文件的位置(如果存在的话)。
- 功能:它用于查找指定文件(包括可执行文件、源代码文件和帮助手册文件)的位置。它会在一些特定的目录(如
用户账号信息位置
/etc/passwd (存储用户信息)
/etc/shadow (存贮用户与哈希密码)
组账号
cat /etc/group
禁用账号
sudo passwd -l username
禁用用户为username密的账号
-
sudo
是用于以超级用户(root)权限执行命令 -
passwd
是用于操作用户密码的工具 -
-l
是passwd
命令的一个选项,用于锁定(lock)用户账户 -
username
是要锁定账户的用户名。
change -E 1990-01-01 kali
设置某个账户过期的时间(起到禁用账户的作用)
-E
是chage
命令的一个选项,用于指定账号的过期日期(Expire date)。1990 - 01 - 01
是设置的过期日期,格式为YYYY - MM - DD
。kali
是要修改账号过期时间的用户名。
passwd -S username
passwd
是用于管理用户密码相关操作的工具,-S
是passwd
命令的一个选项,代表 “status”(状态),username
是要查看其密码状态的用户名。
文件系统权限
Linux系统中一切皆文件
查看权限
ls -la /etc/passwd
-
-la
是ls
命令的选项组合 -
-l
表示以长格式(long format)列出文件信息 -
-a
表示列出所有文件,包括隐藏文件(在 Linux 中,以 “.” 开头的文件是隐藏文件)
一般使用选项 -liah
文件的详细信息就都会展现出来
更改文件所有者
chown root file
chown
是一个用于更改文件或目录所有者的命令。- 在
chown root file
这个命令中,root
是新的所有者,file
是要更改所有者的文件名。 - 这意味着执行这个命令后,文件
file
的所有者将被更改为root
用户。
修改文件权限
两种表达与操作
sudo chmod u=rwx,g+rw,o-r file
u=rwx
:u
代表文件的所有者(user)。rwx
分别表示读(read)、写(write)、执行(execute)权限。这意味着将文件所有者的权限设置为拥有对文件的读、写、执行全部权限。
g+rw
:g
代表文件所属的组(group)。+rw
表示在组当前已有的权限基础上,增加读(read)和写(write)权限。也就是说,不管组之前对该文件有什么权限,现在要确保组拥有读和写的权限。
o-r
:o
代表其他用户(others),即既不是文件所有者也不属于文件所属组的其他用户。-r
表示移除其他用户的读权限。所以其他用户将不再拥有对该文件的读权限。
chmod 400 file
通过数字模式(绝对模式)来设置指定文件file
的权限
-
读权限(r)对应二进制位的值为 4(即 2^2)
-
写权限(w)对应二进制位的值为 2(即 2^2) 读写: 4+2 =6
-
执行权限(x)对应二进制位的值为 1(即 2^0) 读写执行 : 4+2+1 =7
-
对于文件所有者(user):
- 数字 “4” 对应的权限组合是读权限。因为 4 = 2^2,也就是只拥有读权限(r),没有写(w)和执行(x)权限
-
对于文件所属组(group):
- 数字 “0” 表示没有任何权限。即文件所属组的成员对文件既不能读,也不能写,更不能执行
-
对于其他用户(others):
- 同样,数字 “0” 表示其他用户对文件没有任何权限,既不能读,也不能写,更不能执行
日志信息
系统日志
ls -l /var/log
/var/log
是系统日志文件所在目录。
认证信息日志
sudo tail -3 /var/log/auth.log
-
tail
命令表示查看文件末尾部分 -
-3
显示文件最后三行末尾部分 -
auth.log
文件(在基于 Debian 和 Ubuntu 的系统中) -
secure.log
文件(在基于 Red Hat 和 CentOS 的系统中)
last
lastlog
这两个命令都可以对用户认证信息进行查看
二进制
who /var/log/wtmp | tail -5
who
命令用于显示当前登录的用户信息/var/log/wtmp
是一个二进制的日志文件,记录了系统登录与注销的信息
dmesg
-
dmesg
是一个在 Linux 系统中用于查看内核环形缓冲区(kernel ring buffer)消息的命令。 -
信息包括设备的初始化情况、硬件检测结果、驱动程序加载信息、系统错误和警告等诸多重要内容
-
帮助用户了解系统硬件状态和内核的运行情况
-
-c
选项:清除内核环形缓冲区中的消息。例如,dmesg -c
会清除当前缓冲区中的所有消息。这个选项在需要重新开始记录消息或者在测试场景下希望清除之前的旧消息时比较有用。 -
-n
选项:设置控制台日志级别。例如,dmesg -n 1
会将控制台日志级别设置为只显示紧急(emergency)消息,这样可以减少输出的信息量,只关注最关键的系统问题。通常日志级别数字越小,显示的消息越紧急,数字范围从 0(紧急)到 7(调试)。 -
-w
或--follow
选项:实时查看内核环形缓冲区中的消息更新。这类似于tail -f
命令对于普通文件的作用。当系统正在运行并且可能会有新的消息产生时,使用dmesg -w
可以实时看到新产生的内核消息,比如在插入或拔出硬件设备、系统服务出现新的问题等情况时能够及时获取信息。
systemd 日志相关命令
journalct
-
journalctl
是一个用于查询和查看系统日志的强大工具,主要用于 systemd 日志管理 -
这些日志信息记录了系统启动、运行过程中的事件,包括服务的启动 / 停止、错误消息、用户登录等多种内容。
-
按时间范围查看日志:
--since
和--until
选项:可以用于查看特定时间范围内的日志。例如,journalctl --since "2024-11-04 17:30:00"
会显示从 2024 年 11 月 4 日 17:30:00 开始的日志,journalctl --until "2024-11-05 10:00:00"
则会显示截至 2024 年 11 月 5 日 10:00:00 的日志。这对于排查在某个特定时间段内发生的系统问题非常有用,比如系统在某个特定时间出现故障,可以通过查看这个时间段的日志来寻找线索。
-
按服务或单元查看日志:
-u
或--unit
选项:用于查看特定系统服务或单元的日志。例如,journalctl -u sshd
可以查看sshd
(SSH 服务)的日志,方便排查与该服务相关的问题,如 SSH 连接失败、登录异常等情况。如果想知道为什么 SSH 服务无法启动或者为什么用户无法通过 SSH 登录,查看sshd
的日志是一个很好的入手点。
-
查看特定优先级(日志级别)的日志:
-p
或--priority
选项:可以筛选出特定优先级的日志。日志优先级从 0(紧急 -emerg
)到 7(调试 -debug
)。例如,journalctl -p 3
或journalctl --priority err
会显示错误(error
)级别及以上优先级的日志,这有助于快速定位系统中的严重问题,因为它过滤掉了一些信息性(如info
级别)和调试性的日志,只关注可能导致系统故障或功能异常的错误消息。
-
实时查看日志更新:
-f
或--follow
选项:类似于tail -f
对于普通文件的功能,用于实时跟踪日志的更新。当系统正在运行并且可能会产生新的日志时,如正在调试一个服务或者监测系统的实时状态,使用journalctl -f
可以让你即时看到新产生的日志记录,对于及时发现和解决问题很有帮助。例如,当你对一个网络服务进行故障排除,并且希望看到在进行一些操作(如重新启动服务、进行连接尝试等)后产生的新日志时,journalctl -f
就非常方便。
存储管理
内存使用量
free -m
-
free
命令本身用于显示系统内存(包括物理内存和交换空间)的总量、已使用量、空闲量等信息 -
-m
选项是让输出结果以兆字节(MB)为单位进行显示
硬盘使用量
df -hT
df -hT
是一个用于查看文件系统磁盘空间使用情况的命令。其中df
是 “disk free” 的缩写-h
选项表示以人类可读(human - readable)的格式显示信息-T
选项用于同时显示文件系统类型
文件或目录大小
sudo du ./* -hsc
-
du
是 “disk usage” 的缩写,用于估算文件或目录占用的磁盘空间大小。 -
.*
(当前目录下的所有文件和目录):- 在
du
命令中,./
表示当前目录,*
是通配符,表示匹配当前目录下的所有文件和目录。这意味着命令会对当前目录下的每一个文件和目录进行磁盘空间使用情况的统计。
- 在
-
-h
(以人类可读的格式显示):- 这个选项使得输出的磁盘空间大小以人类容易理解的格式呈现。例如,输出结果可能会以
KB
(千字节)、MB
(兆字节)、GB
(吉字节)等单位显示,而不是以字节为单位的原始数字。这样更方便用户直观地了解文件或目录占用磁盘空间的大小。
- 这个选项使得输出的磁盘空间大小以人类容易理解的格式呈现。例如,输出结果可能会以
-
-s
(总结):- 当使用
-s
选项时,du
命令会为每个指定的文件或目录显示一个总的磁盘使用量。如果不使用-s
选项,du
命令可能会列出目录中每个子文件和子目录的磁盘使用量,这在目录结构复杂、文件众多的情况下会产生大量的输出信息。而-s
选项可以简化输出,只给出每个文件或目录整体占用的磁盘空间大小。
- 当使用
-
-c
(总计):-c
选项会在输出的最后添加一行,显示所有已统计文件和目录的磁盘空间使用总量。这对于快速了解当前目录下所有文件和目录总共占用的磁盘空间大小非常有用。
查看硬盘分区
sudo fdisk -l
fdisk
是一个磁盘分区工具-l
选项表示列出(list)所有磁盘分区的相关信息
挂载分区
sudo mount -t /dev/sda2 /mnt/data
如果不确定文件系统类型,可以省略-t
选项,系统会尝试自动检测
mount
是挂载命令,它的作用是将指定的文件系统(在这里是由设备 “/dev/sda2” 表示的分区)挂载到 Linux 文件系统的挂载点(在这里是 “/mnt/data”)
基本网络操作
基本网络工具
ifconfig
- 用于显示和配置网络接口信息的命令行工具
- 它可以显示网络接口的IP地址、子网掩码、MAC地址等信息,也可以用来启动、停止、配置网络接口
ip addr
- 用于查看和管理网络接口的命令
- 同时提供了比ifconfig更详细的信息显示,包括接口状态、IP地址、子网掩码、广播地址
sudo ifdom eth0
ifdom
用于关闭指定的网络接口- eth0是网络接口的名称,这里表示关闭eth0的网络接口
sudo ifup eth0
ifup
用于开启指定的网络接口- 这里表示开启eth0的网络接口
网络配置
/etc/network/interfaces
- 这是一个系统文件,用于配置网络接口的静态、IP地址、子网掩码、网关等信息
Networkmanager
- 这是一个动态网络控制和配置的守护进程
- 它可以自动管理网络连接,包括有线连接、无线网络和VPN连接等
Networkmanager
提供了图形界面和命令行工具来配置和管理网络,使得网络配置更加方便。还可以自动检测网络变化,并根据配置自动进行网络连接
网络连接
netstat -natup
-n
(numeric):- 以数字形式显示网络地址和端口号。通常情况下,网络服务会关联到特定的端口,使用这个选项可以避免将 IP 地址和端口号解析为域名和服务名称,使得输出更加简洁明了。例如,它会直接显示 IP 地址 “192.168.1.100”,而不是尝试将其解析为域名;对于端口号,会直接显示 “80”,而不是显示对应的服务名称 “http”。
-a
(all):- 显示所有的套接字(socket)连接,包括正在监听(listening)的和已经建立的连接。这意味着不仅可以看到已经成功建立的网络连接,如一个已经和远程服务器建立的 TCP 连接用于网页浏览,还可以看到服务器端正在等待客户端连接的监听状态的套接字,例如,Web 服务器在端口 80 上等待 HTTP 请求的监听状态。
-t
(tcp):- 仅显示 TCP(Transmission Control Protocol)协议相关的网络连接信息。TCP 是一种面向连接的、可靠的传输协议,常用于如网页浏览(HTTP 协议基于 TCP)、文件传输(FTP 协议部分基于 TCP)等应用场景。使用这个选项可以筛选出 TCP 连接,便于查看特定协议下的网络连接状态,比如查看当前有多少个正在进行的 TCP 连接用于数据传输。
-u
(udp):- 只显示 UDP(User Datagram Protocol)协议相关的网络连接信息。UDP 是一种无连接的、不可靠的传输协议,它常用于一些对实时性要求较高但对数据完整性要求相对较低的应用场景,如视频直播、DNS(域名系统)查询等。这个选项有助于聚焦 UDP 连接,了解 UDP 相关服务的连接状态。
-p
(program):- 显示与每个网络连接相关联的程序(进程)名称和进程 ID(PID)。这对于确定是哪个程序在使用网络连接非常有用。例如,当发现一个可疑的网络连接时,可以通过
-p
选项查看是哪个程序发起的连接,从而判断是否存在恶意软件或者程序异常使用网络的情况。
- 显示与每个网络连接相关联的程序(进程)名称和进程 ID(PID)。这对于确定是哪个程序在使用网络连接非常有用。例如,当发现一个可疑的网络连接时,可以通过
ss -natup
ss
是一个用于查看网络套接字(socket)信息的工具,它可以替代传统的netstat
命令,并且在某些情况下性能更好。-natup
是它的一组选项,用于获取特定类型的网络状态信息。
两个命令的作用大致相同,只是一个是旧版的一个是新版的。ss比上面的更高速更稳定
二层地址
arp -en
-
arp
是 “Address Resolution Protocol”(地址解析协议)的缩写,用于查看和操作本地系统的 ARP 缓存表。ARP 协议的主要作用是将 IP 地址转换为对应的 MAC 地址,以便在局域网内实现网络通信。 -
-e
:以 BSD 风格(类似 Unix 系统早期的 Berkeley Software Distribution 风格)的格式显示 ARP 缓存表信息。这种格式相对较为详细,会列出较多的信息列,方便用户全面了解 ARP 缓存的情况。 -
-n
:以数字形式显示 IP 地址和 MAC 地址,而不进行域名解析或尝试将 MAC 地址转换为更易读的厂商格式。这样可以更直接、清晰地展示实际的地址信息,避免因域名解析等额外操作带来的不确定性和可能的错误。
路由信息
route
route
命令主要用于查看和操作内核 IP 路由表。它可以帮助用户了解网络数据包在系统中的传输路径,以及手动添加、删除或修改路由规则。
ip route
是ip命令的一部分,提供了路由管理功能,进行更复杂的路由配置操作
sudo ip rout add 10.13.27.0/24 dev eth1
ip rout add
用于添加一条路由条目10.13.27.0.24
是目标网络地址和子网掩码dev eth1
表示通过名为"eth1"的网络接口到达目标网络。- 执行这个命令可以向系统的路由表里添加一条路由,指定如何到达特定的网络。
路由跟踪工具
tracerout offensive-security.com
tracerout
是一个用于跟踪数据包从本地主机所经过的路由路径的工具offensive-security
是目标主机的域名或ip地址。执行这个命令会逐跳显示数据包经过的路由器的ip地址和响应时间,可以帮助用户了解网络连接的路径和可能存在的网络。
ssh服务
启动服务
sudo systemctl start ssh
systemctl
是用于管理系统服务的工具start ssh
是启动名为ssh
的服务,就是启动SSH服务器,其他设备可以使用SSH协议进行登录连接
连接本地主机
ssh root@localhost
ssh
是SSH服务命令root
是指定的登录用户localhost
指定登录的机器,这里是指本机
远程连接ssh
ssh user1@192.168.1.100
user1
是指定登录的用户192.168.1.100
是指定登录的ip信息
ssh命令的其他选项
-p
(指定端口):- 如果远程设备的 SSH 服务不是运行在默认端口 22 上,需要使用
-p
选项来指定端口。例如,若远程设备的 SSH 服务运行在端口 2222 上,命令应为ssh -p 2222 user1@192.168.1.100
。
- 如果远程设备的 SSH 服务不是运行在默认端口 22 上,需要使用
-i
(指定私钥文件):- 当使用 SSH 密钥进行身份验证时,需要通过
-i
选项指定私钥文件的路径。例如,私钥文件为~/.ssh/id_rsa
,命令可以是ssh -i ~/.ssh/id_rsa user1@192.168.1.100
。这种身份验证方式比密码验证更加安全,在自动化脚本或者高安全性要求的场景中经常使用。
- 当使用 SSH 密钥进行身份验证时,需要通过
配置文件
/etc/ssh/sshd_config
- SSH服务器主要配置文件
包含各种参数:端口号、允许的登录用户、认证方式、访问权限,通过对此文件的操作可以定制化配置ssh服务器
客户端配置
HashKnownHosts yes
- 通常情况下,/.ssh/known_hosts文件用于存储一直的远程主机的公钥信息,来确保连接的安全性。
- 此配置选项会将已知主机文件中的主机名信息进行哈希处理。
~/.ssh
- 这是用户主目录下的一个目录,用于存储SSH客户端的配置和相关文件
- 通常包含私钥文件(如id_rsa)公钥文件(如id_rsa.pub)及已知主机文件(known_hostss).这些文件将用于客户端的身份认证和连接管理
远程拷贝
scp root@10.10.10.1:/home/kali/.bashrc Copiebashrc
scp
:是Secure Copy
的缩写,用于在本地主机和远程主机之间,或者在两个远程主机之间安全地复制文件。root@10.10.10.1
:指定了远程主机的登录信息,这里表示以root
用户名登录到IP
地址为10.10.10.1
的远程主机。:/home/kali/.bashrc
:这是远程主机上要复制的文件路径,即要从远程主机的/home/kali/
目录下复制.bashrc
文件。Copiebashrc
:这是复制操作后在本地保存的文件名(如果当前目录下不存在同名文件的话,它会直接创建这个文件并将内容复制过来;如果已存在同名文件,可能会根据情况提示是否覆盖等,具体取决于所在操作系统和相关设置)。
scp passwd -p kali ssh root@127.0.0.1
scp
远程链接passwd -p
用户密码ssh
ssh远程连接root@127.0.0.1
目标主机
查看历史命令
history
history
是一个常见的命令行工具命令,它的主要作用是显示用户在当前终端会话中执行过的命令历史记录。
原文地址:https://blog.csdn.net/NPSM_/article/details/143522781
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!