ssh遠程執行本地腳本
『壹』 linux下如何使用ssh遠程登錄主機 執行shell腳本
知道linux的ip,用戶和密碼就可以遠程登陸了。在你的SSH 客戶端會有一個linux的終端。在這執行命令就可以了。
『貳』 怎麼通過ssh在遠程Host執行交互命令
ssh執行遠程操作
命令格式
復制代碼 代碼如下:
ssh -p $port $user@$p 'cmd'
$port : ssh連接埠號
$user: ssh連接用戶名
$ip:ssh連接的ip地址
cmd:遠程伺服器需要執行的操作
准備工作
基於公私鑰認證或者用戶名密碼認證能確保登錄到遠程local2伺服器(有點基本運維知識的人做這個事情都不是問題)
cmd如果是腳本,注意絕對路徑問題(相對路徑在遠程執行時就是坑)
不足
這個命令可以滿足我們大多數的需求,但是通常運維部署很多東西的時候需要root許可權,但是有幾處限制:
遠程伺服器local2禁止root用戶登錄
在遠程伺服器腳本里轉換身份用expect需要send密碼,這樣不夠安全
ssh的-t參數
復制代碼 代碼如下:
-t Force pseudo-tty allocation. This can be used to execute arbitrary screen-based programs on a remote machine, which can be very useful, e.g. when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
中文翻譯一下:就是可以提供一個遠程伺服器的虛擬tty終端,加上這個參數我們就可以在遠程伺服器的虛擬終端上輸入自己的提權密碼了,非常安全
命令格式
復制代碼 代碼如下:
ssh -t -p $port $user@$ip 'cmd'
示例腳本
復制代碼 代碼如下:
#!/bin/bash
#變數定義
ip_array=("192.168.1.1" "192.168.1.2" "192.168.1.3")
user="test1"
remote_cmd="/home/test/1.sh"
#本地通過ssh執行遠程伺服器的腳本
for ip in ${ip_array[*]}
do
if [ $ip = "192.168.1.1" ]; then
port="7777"
else
port="22"
fi
ssh -t -p $port $user@$ip "remote_cmd"
done
這個方法還是很方便的,-t虛擬出一個遠程伺服器的終端,在多台伺服器同時部署時確實節約了不少時間啊!
『叄』 請教如何在Bash里調用ssh遠程執行命令
直接將所有可執行的各種命令寫在 bash 的 SHELL 腳本文件中即可。當然了,至於說該 SHELL 腳本文件是否可以執行?並不是說只要你的SHELL腳本文件中的命令都是可執行的,就能夠正確執行的。必須要使用命令:chmod +x my_shell.txt 將其修改成可執行許可權,且 SHELL 腳本文件中的每一個命令都是擁有 x 許可權(可執行許可權)的,才能夠在命令行狀態 $ 下面正常執行。
『肆』 Linux自動登陸expect 遠程主機執行本地腳本
兩台ssh之間做個密鑰,盡量不要使用expect寫腳本。因為expect互動式登錄是需要你在腳本中寫密碼的。
『伍』 shell腳本中怎麼ssh上遠程機執行命令
你好,
先在兩台機子上建立信任,ssh-key
具體方法網路下就有
腳本里的命令是
ssh 用戶@ip
『陸』 shell本地腳本調用遠程腳本,當遠程腳本執行完再繼續執行本地腳本
#!/bin/bash
#調用expect腳本執行遠程sh
expect-c'
settimeout10000
spawnsshusr@ip
expect{
"yes/no"{send"yes ";exp_continue}
"*assword"{send"passwd "}
}
expect"#"
send"sh1 "
expect"#"
'
echo
ls-l
其中timeout時間需要設置足夠長,不然會連接超時斷掉。
或者你配置了rsh,可以把上面的expect過程替換成rsh [Host] [-l UserName] [-n] [Command]
『柒』 ssh如何遠程執行命令
ssh支持遠程命令參數
可以類似方式嵌套:
alias pushbaby='cd /Users/xuqiang/Develop/work/tickets/baby/deploy;scp -r -v -i ~/.ssh/pedal/id_rsa baby.tar.gz baby.sql.txt [email protected]:/home/qiang.xu/tmp;ssh [email protected] -i ~/.ssh/pedal/id_rsa "source ~/.bash_profile;pushbaby";ssh [email protected] -i ~/.ssh/pedal/id_rsa "ssh [email protected] \"source ~/.bash_profile;pushbaby\""'更新要注意的是alias在非交互模式無法使用,需將替換成function
『捌』 ssh如何遠程運行matlab程序腳本
1、不開啟圖形界面
matlab -nodesktop –nosplash
或者matlab –nodisplay
或者matlab -nojvm –nosplash
2、 matlab程序也可以在命令行里直接運行,只需要使用 -r 選項。比如運行當前目錄下的example.m
matlab -nodesktop -nosplash -r example
或者matlab -nojvm -nosplash -r example
或者matlab -nodisplay -r example
『玖』 linux中ssh如何遠程執行一條命令,而且不登錄遠程伺服器
一 SSH命令使用技巧
- 遠程登錄
- 遠程執行
ssh [email protected] 'command ...'
- 遠程復制
scp [email protected]:/remote/path /local/path
scp /local/path [email protected]:/remote/path
- X forward
ssh -X [email protected]
xcommand ...
- Tunnel / Portforward
ssh -L 1234:remote.machine:4321 [email protected]
ssh -R 1234:local.machine:4321 [email protected]
ssh -L 1234:other.machine:4321 [email protected]
二, 實作
1) 禁止 root 登錄
# vi /etc/ssh/sshd_config
PermitRootLogin no
2) 廢除密碼登錄, 強迫使用 RSA 驗證(假設 ssh 賬戶為 user1 )
# vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
# service sshd restart
# su - user1
$ mkdir ~/.ssh 2>/dev/null
$ chmod 700 ~/.ssh
$ touch ~/.ssh/authorized_keys
$ chmod 644 ~/.ssh/authorized_keys
登入端:
$ ssh-keygen -t rsa
(按三下 enter 完成﹔不需設密碼,除非您會用 ssh-agent 。)
$ scp ~/.ssh/id_rsa.pub [email protected]:id_rsa.pub
(若是 windows client, 可用 puttygen.exe 產生 public key,
然後復制到 server 端後修改之, 使其內容成為單一一行.)
回到 server 端:
$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
$ rm ~/id_rsa.pub
$ exit
3) 限制 su / sudo 名單:
# vi /etc/pam.d/su
auth required /lib/security/$ISA/pam_wheel.so use_uid
# visudo
%wheel ALL=(ALL) ALL
# gpasswd -a user1 wheel
4) 限制 ssh 使用者名單
# vi /etc/pam.d/sshd
auth required pam_listfile.so item=user sense=allow file=/etc/ssh_users ōnerr=fail
# echo user1 >> /etc/ssh_users