没有密码的Unix SSH

嘿,我是全新的Unix,我需要写一个“shell脚本”(?)连接到另一个terminal,并运行一些SQL查询。 我到底怎么做到这一点? 我一直在浏览这个和其他板的几个答案,如果我find了我的答案,我不明白这一点。

我能够手动连接,input密码等,但我需要自动化的过程。 我没有访问Perl(如一些答案已经build议),我无法编辑etc / shadow文件。 所以我认为这必须严格通过Unix本身来完成。 这是我目前使用的:

X=`vUser='USER-NAME' vPass='PASSWORD' vTable='TABLENAME' vHOST='HOST-NAME' vPORT=4443 ssh root@vHost expect { "root@the-host password:"{ send -s "'vPass'\r" } } SQL_Query='select * from vTable limit 10' mysql -p$vPASS -D$vTable -u$vUser P$vPort<<EOF $SQL_Query EOF` echo $X>Output.dat 

请全部解释所有答案。 我正在尝试学习。

尝试这个:

  1. 将你的SSH 公钥复制到剪贴板( cat ~/.ssh/id_rsa.pub输出)。 如果您没有SSH密钥对,则使用本教程进行生成。
  2. 将您的公钥粘贴到您的服务器的~/.ssh/authorized_keys文件中。 如果没有,使用nano ~/.ssh/authorized_keys并粘贴。
  3. 在您的计算机中,您可以使用以下命令在服务器中运行脚本:

     ssh user@server_ip 'bash -s' < local_script.sh 

    或者如果你有一个单一的命令运行,那么这将做到:

     ssh user@server_ip "echo Test | tee output.log" 
  4. 如果你不喜欢SSH一直要求你输入密码,可以使用ssh-agent

对于特定于SQL的脚本,可以将所有的SQL命令放在一个文件中,比如query.sql 。 您应该将query.sql复制到您的服务器( scp query.sql user@server_ip:~/ )然后运行

 ssh user@server_ip "mysql -uyourusername -pyourpassword < query.sql | tee output.log" 

输出将保存在output.log 。 也检查这个答案 。

可能不是100%相关,但我必须在Linux上做同样的事情。

首先,您希望在另一台具有SSH访问权限的服务器上创建一个新的用户帐户,并生成SSH密钥对,
即使你要以root身份执行此操作,
密钥对远远超过标准密码,因为它们更强大,
它们允许您通过SSH自动登录。

没有真正的自动化密码输入过程的方法(至少在Linux上不行),因此需要使用SSH密钥来实现这一点。

基本上可以将一串命令作为参数发送到SSH工具。
像这样,
ssh user@host "ls; cat *; yes;"
希望有所帮助。

有一个Linux命令ssh-copy-id将为你做这个,它也可以作为一个自制软件的Mac公式。