banner
Hi my new friend!

SHELL脚本登录服务器

Scroll down

使用shell脚本实现自动登陆服务器

前言

采用termux连接服务器时,总是需要ssh -p 22 root@XXXX并且输入密码,于是编写一个登陆脚本,实现自动登陆。

实现

  • 首先安装expect工具实现与终端的交互:

    1
    apt install expect
  • 编写脚本:vim login.sh

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    #!/usr/bin/expect
    set timeout 20
    # 获取命令行参数
    if {$argc != 1} {
    puts "Usage: $argv0 host_number"
    exit 1
    }
    set host_number [lindex $argv 0]
    # 根据命令行参数选择要登录的服务器
    if {$host_number == 1} {
    set username root
    set password ***
    set host ****
    } elseif {$host_number == 2} {
    set username root
    set password ****
    set host ****
    } elseif {$hose_number == 3} {
    set username root
    set password ***
    set host ****
    } else {
    puts "Invalid host number: $host_number"
    exit 1
    }
    spawn ssh $username@$host
    expect "password:"
    send "$password\r"
    interact
  • 赋予权限:

    1
    chmod +x login.sh
  • 取别名

    1
    alias lg='path/to/login.sh' >> .zshrc

执行

通过lg 1便可以登陆服务器一了,不需要自己输入密码,不过这种将密码以明文存储还是不太安全

安全登录

使用SSH密钥对登录可以提高登录的安全性,以下是实现步骤。

1. 生成 SSH 密钥对

首先,在本地终端上(如CMD,shelltermux)生成 SSH 密钥对:

1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

2. 添加公钥到远程服务器

将生成的公钥(LINUX环境默认是 ~/.ssh/id_rsa.pub)复制到需要通过密钥登录的远程服务器:

1
ssh-copy-id username@remote_host

此命令会将公钥添加到远程服务器的 ~/.ssh/authorized_keys 文件中。如果没有 ssh-copy-id 命令,可以手动复制:

1
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

3. 确保正确的权限

确保远程服务器上的 .ssh 目录和 authorized_keys 文件具有正确的权限:

1
2
3
ssh username@remote_host
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

4. 连接到远程服务器

现在就可以使用 SSH 密钥对连接到远程服务器:

1
ssh username@remote_host

5. 简化登录操作

使用alias对登录操作取别名:

1
2
3
4
5
6
#zsh终端
alias lg='path/to/login.sh' >> ~/.zshrc
#普通终端
alias lg='path/to/login.sh' >> ~/.bashrc
#应用一下或者重启
source ~/.zshrc

通过lg命令直接登录

其他文章
目录导航 置顶
  1. 1. 使用shell脚本实现自动登陆服务器
    1. 1.1. 前言
    2. 1.2. 实现
    3. 1.3. 执行
    4. 1.4. 安全登录
      1. 1.4.1. 1. 生成 SSH 密钥对
      2. 1.4.2. 2. 添加公钥到远程服务器
      3. 1.4.3. 3. 确保正确的权限
      4. 1.4.4. 4. 连接到远程服务器
      5. 1.4.5. 5. 简化登录操作
请输入关键词进行搜索