4_SSH相关用法

SSH

  1. Secure Shell 是linux管理员最常用的远程管理linux的协议。

    img

    systemctl status ssh

    ● ssh.service - OpenBSD Secure Shell server
    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
    Active: active (running) since Thu 2023-07-27 15:33:52 CST; 37s ago
    Docs: man:sshd(8)
    man:sshd_config(5)
    Process: 668 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
    Main PID: 685 (sshd)
    Tasks: 1 (limit: 4599)
    Memory: 2.3M
    CGroup: /system.slice/ssh.service
    └─685 sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

    putty,openssh是最常用的ssh

    ssh 用户名@ssh服务器的ip地址
    or
    ssh -l 用户名 ssh服务器的ip地址

    ssh client has its own configuration file,which is /etc/ssh/ssh_config

    cat /etc/ssh/ssh_config

    ...

  2. troubleshoot SSH

    可用命令telnet测试ssh服务器的端口22。

    telnet 10.13.118.77 22

    Trying 10.13.118.77...
    Connected to 10.13.118.77.
    Escape character is '^]'.
    SSH-2.0-OpenSSH_8.0
    Connection closed by foreign host.

    nmap -p 22 10.13.118.77

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-07-27 21:37 CST
    Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
    Nmap done: 1 IP address (0 hosts up) scanned in 0.03 seconds

    nmap -p 22 10.13.118.77 -Pn

    Starting Nmap 7.80 ( https://nmap.org ) at 2023-07-28 10:41 CST
    Nmap scan report for 10.13.118.77
    Host is up.

    PORT STATE SERVICE
    22/tcp filtered ssh

    Nmap done: 1 IP address (1 host up) scanned in 2.10 seconds

    查看有无防火墙:

    sudo iptables -vnL

    [sudo] password for vboxuser:
    Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination

    Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination

    Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
    pkts bytes target prot opt in out source destination

  3. ufw = uncompilated fire wall ,默认是被禁止的,但是可以查看它的状态。

    sudo ufw status verbose

    Status: inactive

    开启ufw:

    sudo ufw enable

    Firewall is active and enabled on system startup

    禁止ufw:

    sudo ufw disable

    Firewall stopped and disabled on system startup

    you can list all application profiles available on your server by running ufw app list.

    Available applications:
    CUPS
    Openssh

    使防火墙允许ssh:

    sudo ufw allow ssh

    Rules updated
    Rules updated (v6)

    run the ssh client in verbose mode by using the -v option like this:

    ssh -v lyy@10.13.118.70 #verbose模式 debug模式 详细的,冗长的

    it causes ssh to print degubbing messages about it progress.

    this is helpful in debugging connection,authentication and configuration problems.

    如果问题依然存在,查看服务器日志:

    如下:

    sudo tail -f /var/log/auth.log

    Jul 28 12:30:01 lyy CRON[6353]: pam_unix(cron:session): session closed for user root
    Jul 28 13:17:01 lyy CRON[6932]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jul 28 13:17:01 lyy CRON[6932]: pam_unix(cron:session): session closed for user root
    Jul 28 13:30:01 lyy CRON[6939]: pam_unix(cron:session): session opened for user root by (uid=0)
    Jul 28 13:30:01 lyy CRON[6939]: pam_unix(cron:session): session closed for user root
    Jul 28 13:39:30 lyy sudo: vboxuser : TTY=pts/0 ; PWD=/home/vboxuser ; USER=root ; COMMAND=/usr/bin/tail -f /war/log/auth.log
    Jul 28 13:39:30 lyy sudo: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jul 28 13:39:30 lyy sudo: pam_unix(sudo:session): session closed for user root
    Jul 28 13:39:55 lyy sudo: vboxuser : TTY=pts/0 ; PWD=/home/vboxuser ; USER=root ; COMMAND=/usr/bin/tail -f /var/log/auth.log
    Jul 28 13:39:55 lyy sudo: pam_unix(sudo:session): session opened for user root by (uid=0)

    跟ssh服务器有关的配置可以在以下文件中配置:

    ls -l /etc/ssh/

    -rw-r--r-- 1 root root 535195 4月 4 06:47 moduli
    -rw-r--r-- 1 root root 1603 3月 30 2022 ssh_config
    drwxr-xr-x 2 root root 4096 3月 30 2022 ssh_config.d
    -rw-r--r-- 1 root root 3289 4月 4 06:47 sshd_config
    drwxr-xr-x 2 root root 4096 4月 4 06:47 sshd_config.d
    -rw------- 1 root root 505 7月 16 23:21 ssh_host_ecdsa_key
    -rw-r--r-- 1 root root 170 7月 16 23:21 ssh_host_ecdsa_key.pub
    -rw------- 1 root root 399 7月 16 23:21 ssh_host_ed25519_key
    -rw-r--r-- 1 root root 90 7月 16 23:21 ssh_host_ed25519_key.pub
    -rw------- 1 root root 2590 7月 16 23:21 ssh_host_rsa_key
    -rw-r--r-- 1 root root 562 7月 16 23:21 ssh_host_rsa_key.pub
    -rw-r--r-- 1 root root 342 7月 16 23:21 ssh_import_id

    如果想要修改sshd_config,最好先备份一份,如果你是一个新手的话。

  4. 一般默认安装的ssh并不是最安全的,这里有几个简单的步骤可以显著提高ssh的安全性,保护开放的ssh服务器。

    服务器配置文件位于/etc/ssh中,名为sshd_config,编辑文件后必须重启服务器以应用服务。

    此文件中的默认选项会保留注释,想要覆盖默认值,则必须取消注释改行并更改选项。

    如果想了解更多关于选项的信息,可以查看sshd_config的手册页:

    man sshd_config

    步骤1.当使用非默认端口,而不是默认端口port 22时,黑客将不会扫描到该端口。

    步骤2.禁止以root身份直接登陆。

    步骤3.完全禁止用密码身份验证

    步骤4.添加AllowUsers选项只允许部分管理员利用ssh远程登录。

    AllowUsers user1 user2 user3

    步骤5.如果仅有少数管理员登录,那么登录源的ip地址将是有限的,可以使用以下命令只允许少数ip地址和网络登录。

    iptables -A INPUT -p tcp --dport 2278 -s 2.2.4.5 -j Accept
    iptables -A INPUT -p tcp --dport 2278 -s 2.45.6.100 -j Accept
    iptables -A INPUT -p tcp --dport 2278 -j DROP

    步骤6.可以设置一个空闲超时间隔(idle timeout internal),这是以秒为单位的时间间隔,如果没有从客户端受到数据,sshd守护进程将通过加密渠道发送消息以请求客户端的响应。

    如果你设置的空闲超时间间隔是300秒,一旦超过时间间隔空闲用户(idle user)将会被自动注销。

    其他选项比如可以设置ClientAliveInterval,来设置空闲超时间间隔;

    可以设置MaxAuthTries,来制定每个连接允许的最大身份验证尝试次数;

    还有比如MaxStartups,LoginGraceTime等选项。

  5. scp命令可以在客户端和远端服务器之间、远端服务器和远端服务器之间相互复制文件。

    for example:

    ip add show > ip.txt
    scp -P 22 ip.txt student@192.168.0.20:~

    如果想拷贝到其他路径中,更改冒号后的目标路径即可:

    scp -P 22 ip.txt student@192.168.0.20:~/ip_centos.txt/

    如果想拷贝目录,需更改源路径:

    scp -r -P 22 mydir/ student@192.168.0.20:~

    for example2:从远程服务器下载文件或目录到客户端:

    scp student@192.168.0.20:~/... /home/...

    for example3:将文件或目录从一个远程服务器拷贝到另一个远程服务器

    scp user1@IP1:/path_to_source_file user2@IP2:/path_to_destination_dir
  6. SSH FILE Transfer Protocol(also Secure File Transfer Protocol,or SFTP)

    SFTP包含额外的功能,例如恢复中断的传输、目录列表或远程文件删除。

    SFTP与传统FTP协议无关,比较好用的sftp,比如 FileZILA。

  7. rsync是一种快速且通用的在本地或者远程的两个位置之间同步文件或目录的实用程序,被广泛应用于备份或者镜像,可以被看做是一种改进的复制命令。

    for example:

    sudo rsync -av /etc/ ~/etc-backup/
    # -a 选项告诉rsync以归档模式运行,这意味着它将复制目录,递归地保留符号链接、所有者、组和权限。
    # -v 选型指示以详细模式运行

    rsync与cp的区别是,rsync命令只会拷贝发生更改的文件,比cp更加高效。

    当源地址有文件被删除时,如果想保持源地址和目标地址的文件同步,加上--delete选项。

    sudo rsync -av --delete /etc/ ~/etc-backup/

    当你想在同步过程中删除某些特定的文件,比如非常大或不重要的文件,要排除该种文件和目录,请使用--exclude-files选项,

    for example:

    img

    从要复制的文件夹中删除movie1.mkv文件,可以这么做:

    vim exclude_files.txt #vim编辑需要删除的文件和目录

    movie1.mkv
    dir1/
    *.png

    rsync -av --exclude-from='./exclude_files.txt' my_project/ backup/ #在运行rsync命令时,最好使用绝对路径。

    从下图中,可以看出rsync在执行同步命令时,成功排除了排除文件指定的文件和目录。

    img

    也可以直接在exclude选项里制定需要排除的文件或目录:

    rsync -av --exclude='*.png' --exclude='*.pdf' my_project/ backup/

    通过ssh实现文件的同步:

    sudo rsync -av -e ssh --delete /etc/ student@192.168.0.20:~/etc-centos/

    指定另一个端口port

    sudo rsync -av -e 'ssh -p 22' --delete /etc/ student@192.168.0.20:~/etc-centos/

    相反,通过ssh从服务端下载文件至客户端:

    rsync -av -e ssh student@192.168.0.20:~/my_project .
posted @   lyyyuanfang  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示