1.ssh命令详解

1.1使用详解

          
          
ssh --help
man ssh
  • 1.
  • 2.

          
          
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
[-D [bind_address:]port] [-E log_file] [-e escape_char]
[-F configfile] [-I pkcs11] [-i identity_file]
[-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
[user@]hostname [command]
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
1.2参数解释

          
          
-l 指定登入用户
-p 设置端口号
-f 后台运行,并推荐加上 -n 参数
-n 将标准输入重定向到 /dev/null,防止读取标准输入。如果在后台运行ssh的话(-f选项),就需要这个选项。
-N 不执行远程命令,只做端口转发
-q 安静模式,忽略一切对话和错误提示
-T 禁用伪终端配置
-t (tty)为远程系统上的ssh进程分配一个伪tty(终端)。如果没有使用这个选项,当你在远程系统上运行某条命令的时候,ssh不会为该进程分配tty(终端)。相反,ssh将会把远端进程的标准输入和标准输出附加到ssh会话上去,这通常就是你所希望的(但并非总是如此)。这个选项将强制ssh在远端系统上分配tty,这样那些需要tty的程序就能够正常运行。
-v verbose)显示与连接和传送有关的调试信息。如果命令运行不太正常的话,这个选项就会非常有用。
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

#yyds干货盘点#shell如何进行远程ssh_端口号

2.简单的ssh


          
          
ssh -p $port $user@ $p 'cmd'

$port : ssh连接端口号
$user: ssh连接用户名
$ip:ssh连接的ip地址
cmd:远程服务器需要执行的操作
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

对于这种ssh,命令一般只有一条,如要手动鉴权,输入密钥,端口默认22

#yyds干货盘点#shell如何进行远程ssh_标准输入_02

3.复杂的ssh


          
          
SHELL = `ssh root@192.168.33.25 << remotessh
cd /home
rm -rf token.txt
touch token.txt
cd /home/1.8/keadm-v1.8.0-linux-amd64/keadm
./keadm gettoken >> /home/token.txt
cat /home/token.txt
exit
remotessh `
echo -e "========================打印token======================\n"
echo $SHELL
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
3.1 shell详解

远程执行的内容在“<< remotessh” 至“ remotessh”之间,在远程机器上的操作就位于其中,注意的点:

  1. << remotessh,ssh后直到遇到remotessh这样的内容结束,remotessh可以随便修改成其他形式。
  2. 重定向目的在于不显示远程的输出了
  3. 在结束前,加exit退出远程节点

一般这种都需要提前做好ssh免密登录

3.2 免密登录

设置免密


          
          
ssh-copy-id root@192.168.103.49
  • 1.

#yyds干货盘点#shell如何进行远程ssh_标准输入_03

如果/root/.ssh/id_rsa下密钥key失效需要重新生成


          
          
ssh-keygen
  • 1.

清除免密


          
          
ssh-keygen -R root@192.168.103.49
  • 1.