因此,就想为什么不能用MAC上的Automator工作流来自动执行登陆,但是一开始不大顺利直接使用ssh name@hostname放在工作流的执行shell脚本里面直接报错——“pseudo-terminal will not be allocated becausee stdin is not a terminal ”。刚开始以为是要prompt输入密码的原因。
于是,参照网上的说法,生成了密钥对,并把公钥放在了远程服务器端,通过shell登陆可以不输密码了,具体的操作可以搜索 ssh-keygen生成密码对。
搞定密钥匹配之后,使用工作流测试还是有pseudo-terminal will not be allocated becausee stdin is not a terminal ”的问题,于是直接google这个错误信息。获取的信息都是不在shell执行ssh时,比如其他程序调用或者系统启动项时会有这个错误,原来在linux中也有。。。因此找到问题的原因是ssh要求有终端输出的。按照网上的解决方式1,2,参照ssh参数说明,可以使用-tt实现强制外部调用。
如此两步之后,结果还是出现了pseudo-terminal,最后没办法试了个系统黑洞,虽然原网页说还有同样的问题,但是我这边竟然成功了。
因此,最后成功的命令是:
ssh -tt name@hostname -pport -L port1:ipaddress:port2 > /dev/null &