Tôi đang cố gắng tạo một tập lệnh php chạy trên thiết bị đầu cuối sẽ kết nối với máy chủ từ xa bằng ssh và truy xuất tệp. đây là mã của tôi cho đến nayĐang cố kết nối bằng ssh2_auth_pubkey_file()
#!/usr/bin/php -q
<?php
$cwd = dirname(__FILE__).'/';
$filename = 'retrive-this.file';
$host = 'hostip';
$connection = ssh2_connect($host, 22, array('hostkey'=>'ssh-rsa'));
$methods = ssh2_auth_pubkey_file($connection, 'remoteuser',
$cwd.'ssh/id_rsa.pub',
$cwd.'ssh/id_rsa', "it's an inception");
var_dump($methods);
//ssh2_scp_recv($connection, "/remote/server/path/to/$filename", $cwd.$filename);
?>
cho bây giờ tôi đang gặp vấn đề với các ssh2_auth_pubkey_file()
chức năng, khi tôi chạy kịch bản nó sẽ trả về này:
PHP Warning: ssh2_auth_pubkey_file(): Authentication failed for remoteuser using public key in /home/tonyl/Projects/get-file-ssh.php on line 10
bool(false)
Các tập tin quan trọng được phép -rw-r--r--
(644). Ngoài ra, khóa công khai đã được thêm vào các khóa được cấp phép của remoteuser. Tôi có thể ssh bằng cách sử dụng lệnh ssh như bình thường, vì vậy tôi không nghĩ rằng đó là một vấn đề ủy quyền ssh, nhưng ai biết được. Tôi mới vào ssh và thư viện php ssh2.
Tôi có thể kết nối bằng cách sử dụng ssh2_auth_password()
nếu tôi bật nó trong tệp sshd_config từ xa, nhưng tôi không muốn làm điều đó vì nó làm giảm an toàn khi chuyển.
Bất kỳ ý tưởng nào về những gì tôi có thể làm.
dir mặc định sẽ là '.ssh', không phải' ssh', có thể đó là vấn đề? Và id_rsa thực sự là 0600, thuộc sở hữu của người dùng kết nối. – Wrikken
Nếu điều này làm việc với ssh từ dòng lệnh, Điều này là gần như không thể gỡ lỗi mà không cần bước vào libssh2 với một trình gỡ lỗi. Bạn cũng có thể thử đầu tiên để chạy PHP với strace để xem nếu bạn có thể tìm thấy một cái gì đó fishy. – Artefacto
Tôi ít nhất có thể xác nhận đây là thông báo lỗi _exact_ được nhận khi tệp khóa công khai/riêng tư không tồn tại. – Wrikken