{"id":12706,"date":"2026-01-08T10:26:58","date_gmt":"2026-01-08T04:56:58","guid":{"rendered":"https:\/\/www.youstable.com\/blog\/?p=12706"},"modified":"2026-01-08T10:27:01","modified_gmt":"2026-01-08T04:57:01","slug":"what-is-ftp-on-linux-server","status":"publish","type":"post","link":"https:\/\/www.youstable.com\/blog\/what-is-ftp-on-linux-server","title":{"rendered":"What is FTP on Linux Server? Secure File Transfer Guide"},"content":{"rendered":"\n<p><strong>FTP on a Linux server<\/strong> is a client\u2013server protocol that transfers files over TCP\/IP, typically on port 21. It supports user authentication, directory navigation, and upload\/download operations.<\/p>\n\n\n\n<p>While classic FTP is unencrypted, you can secure it with FTPS (TLS) or replace it with SFTP (SSH). For most production uses, SFTP or FTPS is recommended.<\/p>\n\n\n\n<p>Understanding FTP on a Linux server helps you move website files, automate backups, and collaborate with teams. This guide explains how FTP works, the difference between FTP, FTPS, and SFTP, how to install and configure an FTP server (vsftpd), secure it, troubleshoot issues, and follow best practices for performance and reliability.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"how-ftp-works-on-a-linux-server\"><strong>How FTP Works on a Linux Server<\/strong><\/h2>\n\n\n\n<div class=\"wp-block-media-text has-media-on-the-right is-stacked-on-mobile\"><div class=\"wp-block-media-text__content\">\n<p>FTP uses two channels: a control connection for commands and a data connection for file transfer and directory listings. The complexity arises from how the data channel is opened: active vs. passive mode.<\/p>\n<\/div><figure class=\"wp-block-media-text__media\"><img loading=\"lazy\" decoding=\"async\" width=\"1168\" height=\"784\" src=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-FTP-Works-on-a-Linux-Server.png\" alt=\"How FTP Works on a Linux Server\" class=\"wp-image-13210 size-full\" srcset=\"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-FTP-Works-on-a-Linux-Server.png 1168w, https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/How-FTP-Works-on-a-Linux-Server-150x101.png 150w\" sizes=\"auto, (max-width: 1168px) 100vw, 1168px\" \/><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"active-vs-passive-ftp\"><strong>Active vs. Passive FTP<\/strong><\/h2>\n\n\n\n<p>In active mode, the server initiates the data connection back to the client. In passive mode, the client initiates both control and data connections, and the server tells the client which passive port to use. Passive mode works better behind NAT, firewalls, and cloud environments.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Control channel:<\/strong> TCP 21 (FTP) or TCP 21 with AUTH TLS (Explicit FTPS)<\/li>\n\n\n\n<li><strong>Data channel (active):<\/strong> Server connects from TCP 20 to a client port<\/li>\n\n\n\n<li><strong>Data channel (passive): <\/strong>Server listens on a high port range you configure (e.g., 40000\u201350000)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"ftp-vs-ftps-vs-sftp\"><strong>FTP vs. FTPS vs. SFTP<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>FTP:<\/strong> Unencrypted, simple, widely supported. Not recommended over the public internet.<\/li>\n\n\n\n<li><strong>FTPS (FTP over TLS):<\/strong> Encrypts credentials and data. Two flavors: Explicit FTPS (AUTH TLS on port 21) is most common; Implicit FTPS (port 990) is legacy.<\/li>\n\n\n\n<li><strong>SFTP (SSH File Transfer Protocol):<\/strong> Different protocol over SSH (TCP 22). Firewall-friendly, key-based auth, easy to harden. Preferred in most modern setups.<\/li>\n<\/ul>\n\n\n\n<p>Rule of thumb: If you control both ends and need classic FTP compatibility, use FTPS. If you want simpler security and fewer firewall issues, use SFTP.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"choosing-an-ftp-server-on-linux\"><strong>Choosing an FTP Server on Linux<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>vsftpd:<\/strong> Very Secure FTP Daemon. Fast, lightweight, security-focused. Great default choice for FTP\/FTPS.<\/li>\n\n\n\n<li><strong>ProFTPD:<\/strong> Flexible, Apache-style config, rich modules. Good for complex virtual hosting.<\/li>\n\n\n\n<li><strong>Pure-FTPd:<\/strong> Easy configuration, virtual users, TLS support. Balanced simplicity and features.<\/li>\n<\/ul>\n\n\n\n<p>For most admins, vsftpd offers the best blend of performance and security with minimal configuration. The steps below use vsftpd.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"install-and-configure-vsftpd\"><strong>Install and Configure vsftpd<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"install-the-package\"><strong>Install the package<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Debian\/Ubuntu\nsudo apt update\nsudo apt install -y vsftpd\n\n# RHEL\/CentOS\/AlmaLinux\/Rocky\nsudo dnf install -y vsftpd\n\n# Start and enable service\nsudo systemctl enable --now vsftpd\nsudo systemctl status vsftpd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"basic-security-first-configuration\"><strong>Basic security-first configuration<\/strong><\/h3>\n\n\n\n<p>Edit \/etc\/vsftpd.conf. The following hardens a common \u201clocal users only\u201d setup with chroot, passive ports, and no anonymous access.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/vsftpd.conf (baseline secure config)\nanonymous_enable=NO\nlocal_enable=YES\nwrite_enable=YES\nlocal_umask=022\ndirmessage_enable=YES\nuse_localtime=YES\nxferlog_enable=YES\nconnect_from_port_20=YES\n\n# Chroot local users to their home directories\nchroot_local_user=YES\nallow_writeable_chroot=YES\n\n# Passive mode ports (match your firewall)\npasv_enable=YES\npasv_min_port=40000\npasv_max_port=50000\n\n# Limit users to a whitelist file (optional)\nuserlist_enable=YES\nuserlist_file=\/etc\/vsftpd.userlist\nuserlist_deny=NO\n\n# Disable ASCII mode for performance and safety\nascii_upload_enable=NO\nascii_download_enable=NO\n\n# Security &amp; performance\nseccomp_sandbox=YES\npam_service_name=vsftpd\n<\/code><\/pre>\n\n\n\n<p>Then restart vsftpd:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl restart vsftpd<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"create-users-and-set-permissions\"><strong>Create users and set permissions<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Create a Linux user without shell access\nsudo useradd -m -s \/usr\/sbin\/nologin ftpuser\nsudo passwd ftpuser\n\n# Optional: limit to specific directory\nsudo mkdir -p \/var\/www\/ftpuser\nsudo chown ftpuser:ftpuser \/var\/www\/ftpuser\nsudo usermod -d \/var\/www\/ftpuser ftpuser\n\n# Add user to vsftpd whitelist (if enabled)\necho \"ftpuser\" | sudo tee -a \/etc\/vsftpd.userlist<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"open-firewall-and-selinux\"><strong>Open firewall and SELinux<\/strong><\/h3>\n\n\n\n<p>Open port 21 and the passive range you configured. Also allow FTPS if you enable TLS later.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># UFW (Ubuntu)\nsudo ufw allow 21\/tcp\nsudo ufw allow 40000:50000\/tcp\nsudo ufw reload\n\n# firewalld (RHEL\/CentOS\/Alma\/Rocky)\nsudo firewall-cmd --permanent --add-port=21\/tcp\nsudo firewall-cmd --permanent --add-port=40000-50000\/tcp\nsudo firewall-cmd --reload\n\n# SELinux (allow FTP to read\/write home directories and passive ports)\nsudo setsebool -P ftpd_full_access on\n# Or more granular:\n# sudo setsebool -P allow_ftpd_anon_write=off\n# sudo setsebool -P allow_ftpd_full_access=on<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"test-the-connection\"><strong>Test the connection<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># From a client machine\nftp your.server.ip\n# or use lftp for better features\nlftp -u ftpuser your.server.ip\n# Basic commands once connected\npwd\nls\ncd dir\nget file\nput localfile\nbye<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"secure-ftp-the-right-way\"><strong>Secure FTP the Right Way<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"enable-ftps-tls-in-vsftpd\"><strong>Enable FTPS (TLS) in vsftpd<\/strong><\/h3>\n\n\n\n<p>If policy mandates FTP compatibility, enable TLS. Use Explicit FTPS (AUTH TLS on port 21). Generate or install a certificate:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Self-signed (replace CN)\nsudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \\\n  -keyout \/etc\/ssl\/private\/vsftpd.key \\\n  -out \/etc\/ssl\/certs\/vsftpd.crt \\\n  -subj \"\/C=US\/ST=State\/L=City\/O=Org\/OU=IT\/CN=ftp.example.com\"\n\n# vsftpd TLS config additions\nsudo bash -c 'cat &gt;&gt; \/etc\/vsftpd.conf' &lt;&lt; \"EOF\"\nssl_enable=YES\nrsa_cert_file=\/etc\/ssl\/certs\/vsftpd.crt\nrsa_private_key_file=\/etc\/ssl\/private\/vsftpd.key\nforce_local_data_ssl=YES\nforce_local_logins_ssl=YES\nssl_tlsv1=YES\nssl_tlsv1_1=YES\nssl_tlsv1_2=YES\nrequire_ssl_reuse=NO\nssl_ciphers=HIGH\nEOF\n\nsudo systemctl restart vsftpd<\/code><\/pre>\n\n\n\n<p>Note: Many modern clients prefer TLSv1.2+. If older clients fail, adjust TLS settings accordingly.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"use-sftp-recommended-for-most-cases\"><strong>Use SFTP (recommended for most cases)<\/strong><\/h3>\n\n\n\n<p>SFTP runs over SSH (port 22). No extra daemon required; OpenSSH is usually installed by default. It\u2019s simpler to secure and easier through firewalls.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ensure <a href=\"https:\/\/www.youstable.com\/blog\/install-openssh-on-linux\/\">SSH is installed<\/a> and running\nsudo systemctl enable --now sshd\n\n# Configure SFTP-only group with chroot\nsudo groupadd sftpusers\nsudo useradd -m -G sftpusers -s \/usr\/sbin\/nologin sftpuser\nsudo passwd sftpuser\n\n# In \/etc\/ssh\/sshd_config (add at the end)\nSubsystem sftp internal-sftp\n\nMatch Group sftpusers\n    ChrootDirectory %h\n    ForceCommand internal-sftp\n    X11Forwarding no\n    AllowTcpForwarding no\n\n# Permissions: chroot dir must be owned by root and not writable by user\nsudo chown root:root \/home\/sftpuser\nsudo mkdir -p \/home\/sftpuser\/upload\nsudo chown sftpuser:sftpusers \/home\/sftpuser\/upload\n\nsudo systemctl restart sshd\n\n# Connect\nsftp sftpuser@your.server.ip<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"additional-hardening-tips\"><strong>Additional hardening tips<\/strong><\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Enforce key-based SSH authentication for SFTP. Disable password auth when possible.<\/li>\n\n\n\n<li>Use strong passwords and rotate credentials; integrate with Fail2ban to block brute-force attempts.<\/li>\n\n\n\n<li>Disable anonymous access. Limit users with userlist or Match blocks.<\/li>\n\n\n\n<li>Set appropriate umask (e.g., 022) and permissions to avoid group\/world-writable files.<\/li>\n\n\n\n<li>Log transfers and review regularly. Enable xferlog in vsftpd and syslog for SSH.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"common-ftp-and-sftp-commands\"><strong>Common FTP and SFTP Commands<\/strong><\/h2>\n\n\n\n<pre class=\"wp-block-code\"><code># FTP client basics\nftp server\nUser: ftpuser\nPassword: ****\nls\ncd \/path\nlcd \/local\/path\nget remote.file\nput local.file\nmget *.zip\nmput *.html\nbye\n\n# SFTP client basics\nsftp user@server\nls\ncd \/remote\/dir\nlcd \/local\/dir\nget file\nput file\nchmod 640 file\nmkdir newdir\nexit\n\n# lftp (robust, supports FTPS)\nlftp -u user,pass -e \"set ssl:verify-certificate no; mirror -R .\/site \/var\/www\/html; bye\" ftps:\/\/server<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"troubleshooting-ftp-on-linux\"><strong>Troubleshooting FTP on Linux<\/strong><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"connection-refused-or-timeout\"><strong>Connection refused or timeout<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Is the service running? systemctl status vsftpd or sshd<\/li>\n\n\n\n<li>Firewall open? Ports 21 and passive range for FTP\/FTPS; 22 for SFTP<\/li>\n\n\n\n<li>Cloud security groups\/network ACLs allow inbound?<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"530-login-incorrect\"><strong>530 Login incorrect<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Check user existence, password, and shell (nologin is fine for FTP\/SFTP-only).<\/li>\n\n\n\n<li>If using vsftpd userlist, ensure user is whitelisted and userlist_deny=NO.<\/li>\n\n\n\n<li>Home directory permissions must allow access (not group\/world-writable when chrooted).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"425-cant-open-data-connection-directory-listing-fails\"><strong>425 Can\u2019t open data connection \/ directory listing fails<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Open passive ports on firewall and match vsftpd pasv_min_port\/pasv_max_port.<\/li>\n\n\n\n<li>Client behind NAT? Force passive mode in client settings.<\/li>\n\n\n\n<li>On FTPS, some devices break deep packet inspection. Disable DPI or allow FTPS properly.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"553-could-not-create-file-permission-denied\"><strong>553 Could not create file \/ permission denied<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Verify directory ownership and write permissions for the user.<\/li>\n\n\n\n<li>On SFTP chroot, ensure writable operations happen in a subdirectory owned by the user.<\/li>\n\n\n\n<li>On SELinux, use setsebool or proper contexts (semanage fcontext, restorecon).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"performance-and-reliability-best-practices\"><strong>Performance and Reliability Best Practices<\/strong><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use passive mode with a tight port range to simplify firewalling and reduce random \u201chang\u201d issues.<\/li>\n\n\n\n<li>Keep connections alive with client keepalives; tune timeouts (idle_session_timeout, data_connection_timeout).<\/li>\n\n\n\n<li>Use a dedicated filesystem or disk for heavy upload directories to avoid I\/O contention.<\/li>\n\n\n\n<li>Limit concurrency if needed (e.g., one process per client) or scale horizontally with multiple nodes.<\/li>\n\n\n\n<li>Monitor logs and metrics: xferlog, systemd journal, and network graphs to detect bottlenecks.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"when-to-choose-managed-hosting\"><strong>When to Choose Managed Hosting<\/strong><\/h2>\n\n\n\n<p>If FTP\/SFTP powers your production workflows, downtime or misconfiguration is costly. A managed VPS or dedicated server from YouStable can preconfigure secure SFTP, FTPS with auto-renewing TLS, firewall policies, and 24\/7 monitoring. This frees you to focus on your application while our team keeps transfers fast and safe.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" class=\"wp-block-heading\" id=\"faqs\"><strong>FAQ<\/strong>&#8216;s<\/h2>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-1765645056592\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"1-is-ftp-secure-on-a-linux-server\">1. <strong>Is FTP secure on a Linux server?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Plain FTP is not secure because credentials and data are unencrypted. For security, use FTPS (TLS) with vsftpd or SFTP over SSH. Both encrypt traffic; SFTP is typically simpler to deploy through firewalls and supports <a href=\"https:\/\/www.youstable.com\/blog\/how-to-add-ssh-keys-to-github-account\/\">SSH keys<\/a>.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765645077554\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"2-which-ports-do-i-need-to-open-for-ftp-ftps-and-sftp\">2. <strong>Which ports do I need to open for FTP, FTPS, and SFTP?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>FTP: TCP 21 plus a passive range (e.g., 40000\u201350000). FTPS (Explicit): TCP 21 with the same passive range after AUTH TLS; Implicit FTPS uses TCP 990. SFTP uses only TCP 22, no passive range needed.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765645095164\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"3-should-i-choose-ftps-or-sftp\">3. <strong>Should I choose FTPS or SFTP?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Pick SFTP when possible: it\u2019s simpler, secure by default, and firewall-friendly. Choose FTPS only if you require strict FTP compatibility with legacy systems or specific compliance workflows involving FTP clients and servers.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765645108535\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"4-how-do-i-change-the-default-upload-directory-for-a-user\">4. <strong>How do I change the default upload directory for a user?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>For vsftpd, set the user\u2019s home directory (usermod -d \/path user) and ensure permissions fit the chroot model. For SFTP chroot, the home must be owned by root and not writable; create a writable subfolder owned by the user (e.g., \/home\/user\/upload).<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-1765645122674\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \" class=\"rank-math-question \" id=\"5-why-do-directory-listings-work-locally-but-fail-over-the-internet\">5. <strong>Why do directory listings work locally but fail over the internet?<\/strong><\/h3>\n<div class=\"rank-math-answer \">\n\n<p>It\u2019s usually a passive mode issue. Ensure your server advertises the correct public IP, define a passive port range in vsftpd, and open that range in your firewall and cloud security groups. In many audits, this alone resolves 425\/timeout errors.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>FTP on a Linux server is a client\u2013server protocol that transfers files over TCP\/IP, typically on port 21. It supports [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":17270,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":2,"footnotes":""},"categories":[350,1195],"tags":[],"class_list":["post-12706","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-knowledgebase","category-blogging"],"acf":[],"featured_image_src":"https:\/\/www.youstable.com\/blog\/wp-content\/uploads\/2025\/12\/What-is-FTP-on-Linux-Server-Secure-File-Transfer-Guide.jpg","author_info":{"display_name":"Sanjeet Chauhan","author_link":"https:\/\/www.youstable.com\/blog\/author\/sanjeet"},"_links":{"self":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/12706","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/comments?post=12706"}],"version-history":[{"count":11,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/12706\/revisions"}],"predecessor-version":[{"id":17271,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/posts\/12706\/revisions\/17271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media\/17270"}],"wp:attachment":[{"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/media?parent=12706"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/categories?post=12706"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.youstable.com\/blog\/wp-json\/wp\/v2\/tags?post=12706"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}