أنا أكتب برنامجًا نصيًا للتنقل عبر قائمة بأسماء مضيفين معروفة للعثور على خادم SSH عامل يمكنني المصادقة عليه باستخدام مفتاح SSH الخاص بي.

هو المفتاح تحميل بالفعل مع ssh-agentو ssh-add، حتى إذا كنت على اتصال إلى مضيف بعيد العمل أن يعرف مفتاح بلدي، تتم مطالبة أي عبارة المرور وأنا على اتصال بنجاح دون أي تدخل.

الشيء هو ، عندما لا يعرف المضيف البعيد مفتاحي ، sshيطالبني بعبارة المرور (ليس لديه فرصة للنجاح لأنه ، إذا أمكن ، لكان قد قام بتسجيل الدخول بالفعل بفضل ssh-agent). أود منع هذا السلوك sshوإجهاضه عند ssh-agentفشل المصادقة.

أستخدم حاليًا الأمر التالي لتجاوز معظم التفاعل ولكن لا يمكنني منع الأمر الذي وصفته للتو:

$ ssh -i ~/.ssh/id_rsa                      \
      -o UserKnownHostsFile=/dev/null       \
      -o KbdInteractiveAuthentication=no    \
      -o StrictHostKeyChecking=no           \
      -o PreferredAuthentications=publickey \
      -o ConnectTimeout=1                   \
      $host -n "whoami"

شكرا لإجاباتك.

answer

رجل ssh_config:

 BatchMode
         If set to ``yes'', passphrase/password querying will be disabled.
         This option is useful in scripts and other batch jobs where no
         user is present to supply the password.  The argument must be
         ``yes'' or ``no''.  The default is ``no''.

بينما إجابة BatchMode هي الإجابة الصحيحة بالتأكيد ، أود أن أذكر أيضًا أنه يمكنك أيضًا القيام بما يلي: -o PasswordAuthentication = no؛ نفس صفحة الرجل.